#ruby-on-rails #xml #parsing
#ruby-on-rails #xml #Синтаксический анализ
Вопрос:
ТРЕБОВАНИЕ: средство выборки / синтаксического анализа XML SiteMap для получения полной карты сайта и анализа содержимого XML для извлечения URL исходного веб-сайта (с использованием задания cron)
ОПИСАНИЕ: A sitemap.xml также должен быть реализован синтаксический анализатор для получения полной карты веб-сайта или в случае, если недоступны RSS-каналы.
-
A sitemap.xml также должен быть реализован синтаксический анализатор для получения полной карты веб-сайта или в случае, если недоступны RSS-каналы. Для некоторых веб-сайтов может быть несколько SiteMaps. Источником подробной информации о картах сайта будет
sitemaps
таблица, в которую данные будут загружаться из интерфейса ActiveAdmin. -
Этот анализатор должен быть реализован как независимая программа 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. Спасибо!