如何在Nokogiri中使用Conditional

问题描述 投票:0回答:1

有没有办法把No Url Foud放在一个空白或缺少锚标签。问这个的原因是textnode输出50个textnode但是url只输出47,因为一些锚点是missin或者不可用,导致下一个列表变为colaps并完全破坏列表

看截图td tag | Td list

我可以得到textNodeattributes这里唯一的问题是一些td列表有一个丢失的锚导致另一个列表崩溃

<table>
    <tr>
        <td><a href="url">TextNode</a></td>
    </tr>
    <tr>
        <td><a href="url">TextNode</a></td>
    </tr>
    <tr>
        <td><a href="url">TextNode</a></td>
    </tr>
    <tr>
        <td>TextNode With No Anchor</td>
    </tr>    <tr>
        <td><a href="url">TextNode</a></td>
    </tr>
    <tr>
        <td>TextNode With No Anchor</td>
    </tr>
</table>
company_name = page.css("td:nth-child(2)")
company_name.each do |line|
    c_name = line.text.strip
    # this will output 50 titles
    puts c_name
end

directory_url = page.css("td:nth-child(1) a")
directory_url.each do |line|
    dir_url = line["href"]
    # this will output 47 Urls since some list has no anchor tag.
    puts dir_url
end
ruby web-scraping nokogiri
1个回答
1
投票

你找不到那些不存在的东西。你必须找到那里的东西,然后在其中搜索可能存在或不存在的元素。

喜欢:

directory = page.css("td:nth-child(1)")
directory.each do |e|
  anchor = e.css('a')

  puts anchor.any? ? anchor[0]['href'] : '(No URL)'
end
© www.soinside.com 2019 - 2024. All rights reserved.