我用的是 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 年 1 月 8 日 via Android
selenium 方法多一些,puppeteer 速度快一些。你要玩异步和并发还是得用 js puppeteer,有一些更顶层的封装库很好用。
|
2
kidlfy 2020 年 1 月 8 日
js puppeteer +1
|
3
dreasky 2020 年 1 月 8 日
这个 pyppeteer 经常有点小问题 还是用 js 的 puppeteer 好
|
6
smartbot 2020 年 1 月 8 日 via Android
我也遇到这个问题
|
7
mitu9527 2020 年 1 月 8 日
普遍状况,我自己也遇到过,puppeteer 的 issues 中很多类似的问题,你可以去查查看有没有解决办法。写爬虫就 puppeteer 吧,高级 API,写代码又快又舒服。
|
8
wzwwzw 2020 年 1 月 8 日
不涉及到复杂操作,就用 splash,http api + lua。在做一个负载均衡,比 puppeteer 好多了。
|
9
lonelymarried 2020 年 1 月 8 日
有时候是网页真没加载出来,timeout 了。我一般不设置 timeout。
|
10
coloz 2020 年 1 月 8 日
同 puppeteer,之前简单比较过(用的 js,通过 log 输出时间),是否无头,速度是一样的。。。。
感觉浏览器显示个图像并不影响 puppeteer 的操作,主要的时间还是花在了网络传输上 |
11
luzihang 2020 年 1 月 9 日
我目前的用法
1、部署异步渲染比较快的方式 splash 2、方法比较多的方式 selenium gird+celery 分布式任务分发,可以实现异步。 3、puppeteer 目前用来解决一些比较难登陆,获取 cookie 的问题 |