Я использую HTTParty для доступа и анализа некоторых веб-страниц.
Используя мой обычный подход:
response = HTTParty.get(url)
doc = Nokogiri::HTML(response)
doc.css('ul').each do |link|
p link
end
Все идет хорошо, пока я не доберусь до страницы, которая имеет класс "блок". См. Дерево html ниже:
<li class="river-block">
<div class="block block-thumb">
<div class="block-content">
Some content that I want
</div>
</div>
</li>
Так, например:
doc.css('ul li').each do |link|
p link
end
или
doc.css('ul li.river-block').each do |link|
p link
end
ничего не возвращает.
Что такое класс "block" или "block-content" этого класса? Используется ли это для блокировки этого типа доступа, или я просто ошибаюсь? И если да, есть ли другой способ прочитать содержание?
Я выработал ответ. Сама страница задерживает несколько секунд перед загрузкой - это означает, что html, который получает Nokogiri, более или менее пуст. Итак, теперь я ищу способ заставить Nokogiri задерживаться перед тем, как перейти. Оказывается, класс "block" - это просто тема блока Drupal. Ничего загадочного!