问题标签 [pyppeteer]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
334 浏览

python - Pyppeteer 代码在启动 chrome 后冻结

这是一个使用 pyppeteer 代码部分的 Python 网络爬虫:

使用 pyppeteer 异步运行一些 chrome 进程。它在 Linux (Debian) 上完美运行,但在 Windows 上根本无法运行。浏览器启动,但甚至 print(4) 都没有运行。启动浏览器后代码冻结并且不会引发任何错误。我能用它做什么?

0 投票
1 回答
972 浏览

python - 从网站上抓取某些字段时无法继续单击下一页按钮

我使用 python 与pyppeteer关联创建了一个脚本,以继续单击下一页按钮,直到没有更多内容为止。单击下一页按钮时的脚本会抛出pyppeteer.errors.TimeoutError: Navigation Timeout Exceeded: 30000 ms exceeded.指向此行的此错误await page.waitForNavigation()name不过,它可以item_type从该站点的登录页面进行解析。我知道我可以发出带有适当有效负载的 post http 请求以从那里获取数据,但我的意图是pyppeteer在解析必填字段时使用并继续单击下一页按钮。

网站地址

顺便说一句,如果我第一次手动单击下一页按钮,它会成功完成其余部分。

0 投票
1 回答
846 浏览

python - 皮皮特。Chromium 浏览器在设定的时间后停止加载页面

我正在尝试使用 Pyppeteer 和 asyncio 编写一个程序,该程序将截取不同网站的屏幕截图。但是每次我在大约 20 秒后运行程序时都会发生错误(运行时错误:会话已关闭。很可能页面已关闭“)。后来我发现这是 pyppeteer 的一个已知错误并找到了它的补丁github:

然而,即使错误停止发生,浏览器在同一时间段后仍然失去与互联网的连接,并且 page.goto(url) 函数从未返回控制权。还有什么办法可以解决这个问题吗?

这是我自己的代码的一部分:

0 投票
0 回答
657 浏览

python - Pyppeteer:检测 Page.click 方法上的导航

我有以下一段代码,它加载一个页面并在其中跟随一个链接,使用文档中asyncio.gather推荐的 click 方法

click方法确实触发导航事件时,这会产生奇迹:

但我正在尝试编写可以处理任何选择器的通用代码,即使是那些不会导致导航的选择器。如果我将选择器更改为“h1”,我会得到以下超时,因为没有导航等待:

我找不到一种方法来检测click事件是否会产生额外的请求,以避免Page.waitForNavigation调用。可能吗?在此先感谢您的时间!

0 投票
2 回答
622 浏览

django - 如何禁用登录 pyppeteer

我正在使用 pyppeteer 将图像的屏幕截图制作为 pdf,但 pyppeteer 会自动记录我截取屏幕截图的所有内容,并且由于服务器限制,并且日志被写入文件,日志导致我的服务器崩溃。

有没有办法完全禁用日志记录?我已经试过了:

我还尝试像这样禁用日志记录:

似乎没有任何效果。

更新

通过禁用应用程序中的所有日志记录,我设法找到了一种解决方法,尽管不是解决方案,如下所示:

0 投票
1 回答
1462 浏览

javascript - Puppeteer 缺少响应并且行为与 Pyppeteer 不同

我写了一个简单的程序,它只记录请求和响应,一次是在 Python 中使用 pyppeteer,一次是在 JavaScript 中使用 puppeteer(在遇到问题后我将描述下一个)。这是JS代码:

这是Python代码:

然后我使用以下方法比较它们的输出:

我的问题:

(1) 为什么我得到不同的结果?Puppeteer 和 Pyppeteer 不应该在后台使用完全相同的浏览器,并且(希望)使用相同的默认设置(例如视口......等)吗?
(2) 即使 Python 版本工作得更好(主观上,对于我的用例),因为它记录请求,为什么它不记录相应的响应?在非无头模式下运行时,在开发人员控制台中,两个请求都将显示响应代码 200。什么可能导致响应没有被 pyppeteer 记录?

我尝试使用不同的视口大小并启用/禁用缓存,但无济于事。

编辑:好的,(1)的原因似乎是 pyppeteer 刚刚过时。关于(2): twitch.tv 在使用 puppeteer 运行时不提供我正在寻找的文件(而且流也不起作用);尽管我将 puppeteer 设置为使用与手动访问页面时相同的 chrome 可执行文件和 UserAgent 字符串,但它可以在其中工作。我认为这可能与 puppeteer 禁用扩展有关,因为调试控制台显示cast_sender.js来自 chrome cast 扩展的一些错误,但即使使用确切的 saame 参数启动 chrome,因为 puppeteer 确实加载了感兴趣的文件。

0 投票
2 回答
2120 浏览

python - 如何使用 pyppeteer/puppeteer 单击动态生成的按钮?

我正在使用 Python 无头浏览器库 Pyppeteer。它与 Puppeteer (JS) 基本相同。所以在 Puppeteer 上工作的解决方案也应该在这里工作。我需要一个按钮来点击。问题是这个按钮是动态生成的,并且它的 id 每次都会改变:

按钮

代码

我可以从它的名称的那部分找到那个按钮,它没有改变single_button,但是还有 3 个按钮,它们的 ids 开始single_button

页面中的其他按钮:

使这个按钮独一无二的两件事是它的 id 最后一个数字和标题如果你能帮助我如何通过它的标题点击这个按钮,我将不胜感激。

感谢你们!

0 投票
1 回答
131 浏览

python - Pyppeteer 用于级联下拉框?

我使用 python 和 pyppeteer 抓取网页并卡住了。

一个带有 2 个下拉框 A 和 B 的页面。B 的选择项基于 A 的选择(动态检索的项)。

我的代码列表如下但不起作用

我尝试过 await page.waitForNavigation() 或 page.waitForSelector() ,但都失败了。

我错过了什么吗?

任何评论表示赞赏!

0 投票
4 回答
7088 浏览

aws-lambda - Pyppeteer:浏览器在 AWS Lambda 中意外关闭

我在 AWS Lambda 中遇到了这个错误。看来 devtools websocket 没有启动。不知道如何修复它。有任何想法吗?谢谢你的时间。

异常源于get_ws_endpoint()websocket 响应超时https://github.com/pyppeteer/pyppeteer/blob/ad3a0a7da221a04425cbf0cc92e50e93883b077b/pyppeteer/launcher.py#L225

拉姆达代码:

例外:

0 投票
2 回答
1713 浏览

python - Pyppeteer 浏览器在 heroku 中意外关闭

我最近在 heroku 部署了一个应用程序。它使用 python pyppeteer 包。在 repl.it 上测试时我没有遇到任何问题。但不幸的是,在 heroku 中,浏览器不断崩溃。

我使用 requirements.txt 来安装 pyppeteer 包。我还尝试使用 apt heroku buildpack 来安装 pupeteer 按照此处工作所需的要求

我的程序:

这是来自 heroku 的完整回溯错误: