Python中使用Puppeteer无头模式遇到的Bug如何解决?

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

  • puppeteer: 1.11.0
  • python: 3.6.2
  • chrome: 609904
  • pyppeteer: 0.0.25

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

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

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

尝试过:

  • 搜索 github issue 和 google 找一些答案, 没有能找到可以有效解决问题的答案.
  • 经过 pycharm 调试,也没有能找到有价值的信息.(对异步也不熟悉)

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

大过年的, 谢谢各位啦.


Python中使用Puppeteer无头模式遇到的Bug如何解决?

6 回复

无头模式,要等待页面加载出来,再 click 嘛。有头模式,会阻塞住直到页面渲染完了才能 click。


我无法理解你的问题。

不管是不是无头,应该都是要自己捕获相关元素加载出来才能继续动作吧?

感觉应该是页面请求卡住了,ajax 没有加载,建议 screenshot 调试

卡住之前的 screenshot 没有问题。。。

这个问题,我也遇到过,巧的是我有两台电脑,一台正常运行, pyppeteer 是 0.2.5 另一台版本要低于 0.2.5,然后升级之后,这个问题就解决了(最新版是 0.2.6)

回到顶部