Nokogiri Ruby HTML解析器
问题描述:
我遇到了用Nokogiri在多个页面上刮擦的问题。我需要能够首先根据合格的hrefs缩小搜索结果的范围。所以这里有一个脚本来获得我有兴趣获得的所有hrefs。但是,我无法解析出文章的标题,因此我可以链接到它们。这将是巨大的,知道我可以手动检查的元素,使我有我想要的链接,每当我找到一个链接我想我也可以抓住标题/文本描述的文章/ HREF作为Nokogiri Ruby HTML解析器
<a href.......>Text Linked to</a>
这样我就可以用{:source =>“.....”,:url =>“.....”,:title =>“.....”}进行散列。这是我迄今为止的脚本。它缩小了我有兴趣在哈希中设置的链接。
require 'nokogiri'
require 'open-uri'
page = "http://www.huffingtonpost.com/politics/"
doc = Nokogiri::HTML(open(page))
links = doc.css('a')
hrefs = links.map {|link| link.attribute('href').to_s}.uniq.sort.delete_if{|href| href.empty?}
hrefs.each do |h|
if h.reverse[0,9] != "stnemmoc#"
if (h.reverse[0,7] == "scitilo") & (h.length > 65)
puts h
end
end
end
如果有人可以帮助,也许解释它是如何是我能找到我想要先HREF中,然后分析基于第一过滤从HREF中的URL,因为我这里的文字,那才是真正的不错。还建议将这些Nokogiri脚本放在控制器中,然后在Rails中以这种方式发送到数据库中?我很感激。
感谢
答
我不知道我完全理解你的问题,但我要去把它解释为“我如何提取链接和访问他们的属性呢?”
简单地修改你的选择:
links = doc.css('a[href]')
这会给您有一个href
所有a
元素。然后您可以遍历这些并访问它们的属性。
那么......问题是什么? – pguardiario