Eva*_*ueh 5 python beautifulsoup python-3.x http.client
我正在尝试使用 beautifulsoup4 和 python3 抓取一个非常长的网页。由于网站的大小,http.client当我尝试在网站中搜索某些内容时,会出现错误:
文件“/anaconda3/lib/python3.6/http/client.py”,第 456 行,在读取返回 self._readall_chunked() 文件“/anaconda3/lib/python3.6/http/client.py”,第 570 行,在 _readall_chunked 中引发 IncompleteRead(b''.join(value)) http.client.IncompleteRead: IncompleteRead(16109 字节读取)
有什么办法可以解决这个错误吗?
正如文档http.client在顶部告诉您的那样,这是一个非常低级的库,主要用于支持urllib, 和:
另请参见Requests 包建议用于更高级别的 HTTP 客户端接口。
如果你可以conda install requests或pip install requests,你的问题就变得微不足道了:
import requests
req = requests.get('https://www.worldcubeassociation.org/results/events.php?eventId=222®ionId=&years=&show=All%2BPersons&average=Average')
soup = BeautifulSoup(req.text, 'lxml')
Run Code Online (Sandbox Code Playgroud)
如果您无法安装第三方库,可以解决这个问题,但实际上并不支持,而且并不容易。中的块处理代码都不http.client是公开的或记录的,但文档确实将您链接到源,您可以在其中查看私有方法。特别是,请注意read调用一个名为 的方法_readall_chunked,该方法循环调用_safe_read上的方法_get_chunk_left。该_safe_read方法是您需要替换的代码(例如,通过子类化HTTPResponse或对其进行猴子修补)来解决此问题。这可能不会像使用更高级别的库那么简单或有趣。
| 归档时间: |
|
| 查看次数: |
13375 次 |
| 最近记录: |