我正在解析具有类似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
但这不起作用。任何人都可以帮忙。
答案 0 :(得分:1)
为什么不直接搜索?
编辑:我又错了 - 我意识到为什么我切换到Nokogiri。它更容易使用:
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
答案 1 :(得分:1)
它使用了以下代码
doc.search("div/ol/li/span/a | div/ol/li/h3/a").each do |a|
#..
end
全部谢谢