Я предлагаю использовать Scrapy с Splash
http://splash.readthedocs.io/en/stable/scripting-tutorial.html.
Splash - это браузер без головы, и вы можете рендерить JS и выполнять скрипты. Пример кода
function main(splash)
local num_scrolls = 10
local scroll_delay = 1.0
local scroll_to = splash:jsfunc("window.scrollTo")
local get_body_height = splash:jsfunc(
"function() {return document.body.scrollHeight;}"
)
assert(splash:go(splash.args.url))
splash:wait(splash.args.wait)
for _ = 1, num_scrolls do
scroll_to(0, get_body_height())
splash:wait(scroll_delay)
end
return splash:html()
end
Чтобы отобразить этот скрипт, используйте конечную точку execute для конечной точки render.html:
script = """<Lua script> """
scrapy_splash.SplashRequest(url, self.parse,
endpoint='execute',
args={'wait':2, 'lua_source': script}, ...)
Я использую Scrapy для сканирования, и я считаю, что вам нужно периодически запускать сканирование. вы можете использовать Scrapyd для запуска Scrapy Spider.
Я получил этот код от здесь