анализ содержимого xml в ruby

#ruby-on-rails #xml #parsing

#ruby-on-rails #xml #Синтаксический анализ

Вопрос:

ТРЕБОВАНИЕ: средство выборки / синтаксического анализа XML SiteMap для получения полной карты сайта и анализа содержимого XML для извлечения URL исходного веб-сайта (с использованием задания cron)

ОПИСАНИЕ: A sitemap.xml также должен быть реализован синтаксический анализатор для получения полной карты веб-сайта или в случае, если недоступны RSS-каналы.

  1. A sitemap.xml также должен быть реализован синтаксический анализатор для получения полной карты веб-сайта или в случае, если недоступны RSS-каналы. Для некоторых веб-сайтов может быть несколько SiteMaps. Источником подробной информации о картах сайта будет sitemaps таблица, в которую данные будут загружаться из интерфейса ActiveAdmin.

  2. Этот анализатор должен быть реализован как независимая программа ruby (ruby/sitemap_parser.rb), чтобы он мог выполняться как отдельный скрипт, который будет взаимодействовать с базой данных, используемой ActiveAdmin. Требуемые модели для этой программы ruby должны быть в ruby /lib/models.

МОЙ КОД:

 require 'rubygems'
require 'nokogiri'
require 'open-uri'
require 'active_resource'

class SitemapParser
  url = "http://railsjob.com/jobs/2040-Ruby-on-Rails-developer-Sydney-Australia.xml"
  doc = Nokogiri::HTML(open(url))
  puts doc.at_css("title").text
  doc.css(".item").each do |item|
  title = item.at_css(".prodLink").text
  price = item.at_css(".PriceCompare .BodyS, .PriceXLBold").text[/$[0-9.] /]
  puts "#{title} - #{price}"
  puts item.at_css(".prodLink")[:href]
end

class Sitemap < ActiveResource::Base
  self.site = "http://localhost:3000/admin/"
  self.user = "USER@XXX.com"
  self.password = "XXX"
end

s = Sitemap.all
puts s.inspect


end
  

Какие изменения я должен внести и что я должен кодировать в моделях?

Комментарии:

1. Типичный способ анализа XML в Ruby — использовать REXML, попробуйте эту ссылку

Ответ №1:

Чтобы загрузить среду вашего приложения rails, вы должны использовать require то environment.rb , которое находится в папке конфигурации вашего приложения!

 require 'config/environment.rb'
  

Вы можете просто получить содержимое страницы с помощью Nokogiri и использовать nokogiri в качестве анализатора, или вы также можете получить исходный код страницы и использовать Hash.from_xml(<your_xml_here>) .

Комментарии:

1. Спасибо за этот ответ! Я выполнял синтаксический анализ с Nokogiri , но безуспешно, из-за того, что синтаксический анализ сильно отличался от того, на который я похож в Rails. Спасибо!