关于 Python 使用 puppeteer 无头模式遇到的 bug,求解.

2019-02-02 18:01:51 +08:00
 Nick2VIPUser

系统: ubuntu 16.04
各依赖版本如下:

需求: 使用 python 控制 chrome 访问页面 A,并一直点击页面 A 上的下一页按钮,同时获取每一页数据

利益相关:原始代码暂时不方便发出来

bug: 在有界面模式下,可以正常的翻页并且获取每一页的数据,直到最后一页(6000 页). 但是, 在无头模式下,翻页到 28 页的时候,会报错 Navigation Timeout Exceeded: 3000 ms exceeded, 我捕获了这个错误,然后重新 click 和 waitforNavigation, 然后程序就一直停在这里了.

尝试过:

主要想问:是否有大佬遇到在无头模式超时并程序假死的情况?

大过年的, 谢谢各位啦.

3259 次点击
所在节点    Python
5 条回复
danc
2019-02-02 20:10:39 +08:00
无头模式,要等待页面加载出来,再 click 嘛。有头模式,会阻塞住直到页面渲染完了才能 click。
Nick2VIPUser
2019-02-02 21:18:56 +08:00
@danc 不管是不是无头,应该都是要自己捕获相关元素加载出来才能继续动作吧?
tikazyq
2019-02-09 19:53:50 +08:00
感觉应该是页面请求卡住了,ajax 没有加载,建议 screenshot 调试
Nick2VIPUser
2019-02-15 16:28:59 +08:00
@tikazyq 卡住之前的 screenshot 没有问题。。。
lau52y
2021-09-17 09:19:46 +08:00
这个问题,我也遇到过,巧的是我有两台电脑,一台正常运行, pyppeteer 是 0.2.5 另一台版本要低于 0.2.5,然后升级之后,这个问题就解决了(最新版是 0.2.6)

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/532701

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX