繁体   English   中英

Nokogiri Ruby HTML解析器

[英]Nokogiri Ruby HTML Parser

我在用Nokogiri跨多个页面抓取时遇到了问题。 我需要能够首先根据合格的href缩小搜索范围。 因此,这里是一个脚本,用于获取我感兴趣的所有href。 但是,我在解析文章标题时遇到了麻烦,因此无法链接到它们。 非常高兴知道我可以手动检查这些元素,以便获得所需的链接,并且每当找到链接时,我都可以像中那样获取描述文章/参考的标题/文本。

<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脚本放入Controller中,然后在Rails中以这种方式发送到数据库中吗? 我很感激。

谢谢

我不确定我是否完全理解您的问题,但是我将其解释为“如何提取链接并访问其属性?”

只需修改您的选择器:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM