使用pyppeteer遇到的问题

问题一:使用 pyppeteer 的时候,有时候会遇到 pyppeteer.errors.TimeoutError: Navigation Timeout Exceeded: 30000 ms exceeded 这样的报错信息,这是页面加载超时 就是我们使用代理和浏览器形式访问页面 长时间未打开

就一直会加载 要知道代理有很大的不稳定性

所以我们前解决方案 设置超时时间

await page.goto(
'https://i.meituan.com/',{
'timeout': 10000*20 #这里超时
})

`</pre>

问题二:pyppeteer.errors.NetworkError: Protocol error Network.getCookies: Target close

控制访问指定 url 之后 await page.goto(url),会遇到上面的错误,如果这时候使用了 sleep 之类的延时也会出现这个错误或者类似的 time out。

这个问题是 puppeteer 的 bug,但是对方已经修复了,而 pyppeteer 迟迟没更新

这里测试使用 websockets6.0 版本可以

可以把 python 第三方库 websockets 版本 8.0 改为 6.0 就可以了,亲测可用。

<pre>`pip uninstall websockets #卸载websockets
pip install websockets==6.0 #指定安装6.0版本

`</pre>

问题三:

ConnectionResetError: [WinError 10054] 远程主机强迫关闭了一个现有的连接

网上找资料 发现有人说分析原因,是因为使用 urlopen 方法太过频繁,引起远程主机的怀疑,被网站认定为是攻击行为。导致 urlopen()后,request.read()一直卡死在那里。最后抛出 10054 异常。

具体的解决方法如下:

<pre>`1.在 request 后面写入一个关闭的操作,response.close()
2.  设置 socket 默认的等待时间,在 read 超时后能自动往下继续跑
socket.setdefaulttimeout(t_default)
3.  设置 sleep()等待一段时间后继续下面的操作
time.sleep(t)

我使用的是第一种 失败

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 这段代码使用 Python 内置的 urllib 库打开指定 URL 的网页,并读取其返回的内容。其中,url 是要访问的网页的 URL 地址,urllib.urlopen() 方法返回一个类似文件的对象,使用 read() 方法读取其内容并返回一个字符串。需要注意的是,这种方式打开 URL 是同步阻塞的,需要等待网页加载完成才能返回结果,如果网页过大或响应过慢,可能会导致程序长时间阻塞。建议使用异步请求或多线程等方式来优化程序性能。 ### 回答2: urllib.urlopen(url).read()是一个Python标准库urllib中的方法,用于打开指定的url链接并读取返回的内容。 首先,urllib是一个模块,它提供了一些用于发送HTTP请求、处理URLs以及处理URL编码等功能的方法。 在这个方法中,我们使用urlopen(url)函数打开指定的url链接,并返回一个类似文件的对象。这个对象可以用于读取远程服务器返回的数据。 接下来,我们使用read()方法读取打开的url链接返回的内容。read()方法会把返回的内容作为一个字符串返回。 这个方法通常用于获取远程服务器的响应,比如获取一个网页的内容,或者从服务器下载文件等。读取的内容可以根据需要进行进一步的处理和解析。 使用这个方法时需要注意以下几点: 1. 需要导入urllib模块才能使用该方法,可以使用import urllib语句进行导入。 2. 需要提供一个有效的url链接作为参数,确保能够成功打开和读取对应的资源。 3. 由于涉及网络请求,需要考虑网络连接和响应的延迟,可以使用try-except语句来捕捉可能的网络异常和错误。 例如,我们可以使用以下代码示例来演示该方法的使用: import urllib url = "https://www.example.com" response = urllib.urlopen(url) content = response.read() print(content) 在这个示例中,我们打开了一个url链接,读取并打印了返回的内容。请注意,具体的url链接需要替换为有效的链接才能正常运行。 ### 回答3: `urllib.urlopen(url).read()`是一个Python标准库urllib中的函数调用,用于打开并读取指定URL的内容。 首先,`urllib`是Python的一个标准库,提供了一系列处理URL的函数。其中的`urlopen()`函数是用于打开URL的方法,可以接受一个URL字符串作为参数,并返回一个文件对象。 在上述代码中,`urlopen(url).read()`中的`urlopen(url)`会打开指定的URL,并返回一个文件对象。接着,`.read()`是对这个文件对象的一个方法调用,它会读取文件对象中的内容,并以字符串的形式返回。 换句话说,`urlopen(url).read()`这行代码的作用是打开指定的URL,并将其内容以字符串的形式返回。 请注意,这是一个简单的示例,实际应用中可能需要处理各种异常情况、使用编码方式解析数据等等,具体使用还需要根据具体的需求来进行。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值