Проверьте код сайта.
Если бесконечная прокрутка автоматически запускает действие js, вы можете поступить следующим образом, используя предложение Алиота: вертушка
Следуя docs, вы можете найти, что может запускать события jquery.
Посмотрите код библиотеки, чтобы узнать, какие события вы можете запускать.
Попробуйте создать событие scroll to bottom или создать изменение свойства css для любого из div внутри прокручиваемого содержимого на веб-сайте. После spynner docs, что-то вроде:
browser = spynner.Browser(debug_level=spynner.DEBUG, debug_stream=debug_stream)
# load here your website as spynner allows
browser.load_jquery(True)
ret = run_debug(browser.runjs,'window.scrollTo(0, document.body.scrollHeight);console.log(''scrolling...);')
# continue parsing ret
Маловероятно, что бесконечная прокрутка запускается якорной ссылкой, но, возможно, она может быть запущена действием jquery, а не обязательно привязкой к ссылке. В этом случае используйте следующий код:
br.load('http://pypi.python.org/pypi')
anchors = br.webframe.findAllElements('#menu ul.level-two a')
# chooses an anchor with Browse word as key
anchor = [a for a in anchors if 'Browse' in a.toPlainText()][0]
br.wk_click_element_link(anchor, timeout=10)
output = br.show()
# save output in file: output.html or
# plug this actions into your scrapy method and parse output var as you do
# with response body
Затем запустите scrapy для файла output.html или, если вы его реализовали, используя переменную локальной памяти, которую вы выбрали для хранения измененного html после действия js.
В качестве другого решения веб-сайт, который вы пытаетесь проанализировать, может иметь версию альтернативного рендеринга в случае, если браузер посетителя не активировал js.
Попробуйте отобразить веб-сайт в браузере с отключенным javascript, и, возможно, таким образом веб-сайт сделает доступную ссылку привязки в конце раздела содержимого.
Также есть успешные реализации навигации сканера js с использованием подхода с Scrapy вместе с Selenium, подробно описанного в this так ответь.
person
Evhz
schedule
14.04.2017