2014-02-15 96 views
0

我遇到了用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中以这种方式发送到数据库中?我很感激。

感谢

+0

那么......问题是什么? – pguardiario

回答

0

我不知道我完全理解你的问题,但我要去把它解释为“我如何提取链接和访问他们的属性呢?”

简单地修改你的选择:

links = doc.css('a[href]') 

这会给您有一个href所有a元素。然后您可以遍历这些并访问它们的属性。