Ruby on rails Hpricot:如何在rubyonrails中使用Hpricot进行条件搜索

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

我正在解析两个具有相似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['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”或“我得到了想要的结果”是“|”和“或”相同。谢谢你,伙计。你的解决方案真的帮我摆脱了困境。非常感谢:)