【问题标题】:Nokogiri Node SetNokogiri 节点集
【发布时间】:2014-01-19 15:39:32
【问题描述】:

我正在尝试使用 Nokogiri 来抓取网页。现在,我可以在网页上设置指向以下内容的变量链接:

links = page.css('.item_inner')

链接是:

Nokogiri::XML::NodeSet

然后我遍历这个 NodeSet(links):

links.each{|link| puts link.css('.details a')}

为了获得更多信息。但是现在上面的方法的类现在是:

Fixnum

并返回一个列表(我不确定他们到底返回了什么,但它看起来像一个列表:

<a se:clickable:target="true" href="/nyc/sale/1056207-coop-150-sullivan-street-soho-new-york?featured=1">150 Sullivan Street #34</a>

现在我知道其中有键/值对,但此时我无法访问它们。如何访问此处的 href 和实际名称?

【问题讨论】:

    标签: ruby nokogiri


    【解决方案1】:

    一旦你有一个单个链接作为节点,它的href就是link['href']等等,链接文本(“150 Sullivan Street”)就是它的content

    注意:css 搜索总是产生实际上是一个找到的节点数组(实际上是一个 NodeSet)。如果您非常确定您的搜索只能找到其中一个,则可以使用 at_css 跳过它,从而产生一个节点。

    【讨论】:

    • 你是说为了从每个节点获取 href 我做了类似 links.each{|link| puts link.css('.details a')['href']}?
    • 不,因为link.css 本身就是一个数组。您也必须循环浏览这些结果。
    • links.each{|link| puts link.at_css('.details a')['href']} 实际上给了我 href 但links.each{|link| puts link.at_css('.details a')['content']} 什么也没给我
    • 我没说是它的['content']。我说是它的content。 - 阅读the docs 也会对您有所帮助;没关系。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多