Ruby on rails Hpricot:如何在rubyonrails中使用Hpricot进行条件搜索
我正在解析两个具有相似HTML标记的不同站点。我需要使用一个通用的解析器。我的问题是一个站点有一个HTML格式div/ol/li/span/a,另一个站点有div/ol/li/h3/a 我当前的解析器代码是Ruby on rails Hpricot:如何在rubyonrails中使用Hpricot进行条件搜索,ruby-on-rails,ruby,hpricot,Ruby On Rails,Ruby,Hpricot,我正在解析两个具有相似HTML标记的不同站点。我需要使用一个通用的解析器。我的问题是一个站点有一个HTML格式div/ol/li/span/a,另一个站点有div/ol/li/h3/a 我当前的解析器代码是 doc = Hpricot(open("http://test.com").read) doc.search("div/ol/li/span/a").each do |a| question = a.inner_html ans_url = a.attributes['hr
doc = Hpricot(open("http://test.com").read)
doc.search("div/ol/li/span/a").each do |a|
question = a.inner_html
ans_url = a.attributes['href']
puts question
puts answer_url
end
这在第一个站点上运行良好。我如何使用相同的代码来解析我的第二个站点(div/ol/li/h3/a)。如何指定条件。我所尝试的如下所示
doc = Hpricot(open("http://test.com").read)
doc.search("div/ol/li/span or h3/a").each do |a|
question = a.inner_html
ans_url = a.attributes['href']
puts question
puts answer_url
end
但这并不奏效。任何人都可以帮忙。为什么不两个都搜索呢 编辑:我又错了——我意识到我为什么要改成。它更易于使用:
require 'open-uri'
doc = Nokogiri::HTML(open('http://example.com/'))
doc.search("div > ol > li > span > a", "div > ol > li > h3 > a").each do |a|
question = a.content
answer_url = a.attr('href').value
puts question
puts answer_url
end
我使用了下面的代码
doc.search("div/ol/li/span/a | div/ol/li/h3/a").each do |a|
#..
end
谢谢大家我使用了你的答案,但它显示了错误的参数数量(2对1)。请帮帮我,谢谢你。当我更改它时,我会得到页面的完整html内容,当我放入a.inner_html时,我也会得到一个“attribute”错误,当我使用a.attributes['href']时。如果使用“|”for”或“我得到了想要的结果”是“|”和“或”相同。谢谢你,伙计。你的解决方案真的帮我摆脱了困境。非常感谢:)