繁体   English   中英

在 Python Splinter/Selenium 中,如何在延迟加载网页中加载所有内容

[英]In Python Splinter/Selenium, how to load all contents in a lazy-load web page

我想做什么- 现在我想在一个网站上抓取内容(类似于公司的股票价格)。 每个元素的值(即股票价格)每 1s 更新一次。 然而,这个网页是一个延迟加载的页面,所以一次只能看到 5 个元素,同时,我需要从大约 200 个元素中收集所有数据。

我尝试了什么 - 我使用 Python Splinter 来获取元素的 div.class 中的数据,但是,当前视图周围只有 5-10 个元素出现在 HTML 代码中。 我尝试向下滚动浏览器,然后我可以得到下一个元素(下一个公司的股票价格),但是之前的元素的信息不再可用。 这个过程(向下滚动并获取新数据)太慢了,当我可以完成所有 200 个元素时,第一个元素的值被更改了几次。

那么,您能否提出一些解决此问题的方法? 有没有办法强制浏览器加载所有内容而不是延迟加载?

没有一种正确的方法。 这取决于网站如何在后台运行。 如果它是一个延迟加载的页面,通常有两个选项。

  1. 硒。 它执行所有 js 脚本并将所有来自后台的请求“合并”到一个完整的页面,就像普通的网络浏览器一样。

  2. 访问 API。 在这种情况下,您不必关心 ui 和动态隐藏的元素。 API 使您可以访问网页上的所有数据,通常不止显示。

在您的情况下,如果每秒都有更新,则听起来像是流连接(可能是 webstream)。 所以尝试弄清楚网站是如何获取数据的,然后尝试直接抓取 api 端点。 哪一页是?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM