
我用的是 Python 的接口 pyppeteer 库, 就执行一个简单的例子
import asyncio from pyppeteer import launch async def main(): browser = await launch() page = await browser.newPage() await page.goto( https://www.baidu.com/', timeout=1000*60) await page.screenshot({'path': 'example.png'}) await browser.close() asyncio.get_event_loop().run_until_complete(main()) 开始没设置超时返回以下错误还以为哪里出了问题, 后面才发现 puppeteer 加载一个简单的网页费半天, 设置了一下超时就好了
pyppeteer.errors.TimeoutError: Navigation Timeout Exceeded: 30000 ms exceeded.
而使用 puppeteer 的非无头模式立马就加载出来, 无头比非无头还慢, 请问这什么情况
顺带提问, 做爬虫 js 渲染用 selenium, puppeteer, slash 哪个更好, 或者有更好的框架
1 dcalsky 2020-01-08 11:03:45 +08:00 via Android selenium 方法多一些,puppeteer 速度快一些。你要玩异步和并发还是得用 js puppeteer,有一些更顶层的封装库很好用。 |
2 kidlfy 2020-01-08 11:09:27 +08:00 js puppeteer +1 |
3 dreasky 2020-01-08 11:23:37 +08:00 这个 pyppeteer 经常有点小问题 还是用 js 的 puppeteer 好 |
4 zone10 OP @dreasky js 的 puppeteer 好对接 scrapy 吗, 我用的 scrapy, 如果完全转 nodejs 爬虫不太现实 |
6 smartbot 2020-01-08 13:00:26 +08:00 via Android 我也遇到这个问题 |
7 mitu9527 2020-01-08 13:35:09 +08:00 普遍状况,我自己也遇到过,puppeteer 的 issues 中很多类似的问题,你可以去查查看有没有解决办法。写爬虫就 puppeteer 吧,高级 API,写代码又快又舒服。 |
8 wzwwzw 2020-01-08 17:03:55 +08:00 不涉及到复杂操作,就用 splash,http api + lua。在做一个负载均衡,比 puppeteer 好多了。 |
9 lonelymarried 2020-01-08 17:07:43 +08:00 有时候是网页真没加载出来,timeout 了。我一般不设置 timeout。 |
10 coloz 2020-01-08 23:34:35 +08:00 同 puppeteer,之前简单比较过(用的 js,通过 log 输出时间),是否无头,速度是一样的。。。。 感觉浏览器显示个图像并不影响 puppeteer 的操作,主要的时间还是花在了网络传输上 |
11 luzihang 2020-01-09 10:07:42 +08:00 我目前的用法 1、部署异步渲染比较快的方式 splash 2、方法比较多的方式 selenium gird+celery 分布式任务分发,可以实现异步。 3、puppeteer 目前用来解决一些比较难登陆,获取 cookie 的问题 |