有没有办法把No Url Foud
放在一个空白或缺少锚标签。问这个的原因是textnode输出50个textnode但是url只输出47,因为一些锚点是missin或者不可用,导致下一个列表变为colaps并完全破坏列表
看截图td tag
| Td list
我可以得到textNode
和attributes
这里唯一的问题是一些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
你找不到那些不存在的东西。你必须找到那里的东西,然后在其中搜索可能存在或不存在的元素。
喜欢:
directory = page.css("td:nth-child(1)")
directory.each do |e|
anchor = e.css('a')
puts anchor.any? ? anchor[0]['href'] : '(No URL)'
end