Как использовать Условные в Нокогири - PullRequest
0 голосов
/ 09 марта 2019

Есть ли способ поместить No Url Foud в пустой или отсутствующий тег привязки. Причина этого заключается в том, что текстовый узел выводит 50 текстовых узлов, но URL выводит только 47, так как часть якоря пропущена или недоступна, в результате чего следующий список прерывается и полностью разрушает список

см. Скриншоты 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

1 Ответ

1 голос
/ 09 марта 2019

Вы не можете найти вещи, которых там нет. Вы должны найти вещи, которые там есть, а затем искать в них элементы, которые могут присутствовать или не присутствовать.

Как:

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

  puts anchor.any? ? anchor[0]['href'] : '(No URL)'
end
...