Python 3.x Python http.client.Uncomplete读取(0字节读取)错误
我在论坛上看到了这个错误,并仔细阅读了回复,但我仍然不明白它是什么或如何解决它。我正在从16k链接中从互联网上抓取数据,我的脚本从每个链接中抓取类似的信息,并将其写入.csv。在出现此错误之前,某些日期会被写入Python 3.x Python http.client.Uncomplete读取(0字节读取)错误,python-3.x,web-scraping,beautifulsoup,urllib,Python 3.x,Web Scraping,Beautifulsoup,Urllib,我在论坛上看到了这个错误,并仔细阅读了回复,但我仍然不明白它是什么或如何解决它。我正在从16k链接中从互联网上抓取数据,我的脚本从每个链接中抓取类似的信息,并将其写入.csv。在出现此错误之前,某些日期会被写入 Traceback (most recent call last): File "/usr/local/Cellar/python3/3.5.2_3/Frameworks/Python.framework/Versions/3.5/lib/python3.5/http/client.p
Traceback (most recent call last):
File "/usr/local/Cellar/python3/3.5.2_3/Frameworks/Python.framework/Versions/3.5/lib/python3.5/http/client.py", line 541, in _get_chunk_left
chunk_left = self._read_next_chunk_size()
File "/usr/local/Cellar/python3/3.5.2_3/Frameworks/Python.framework/Versions/3.5/lib/python3.5/http/client.py", line 508, in _read_next_chunk_size
return int(line, 16)
ValueError: invalid literal for int() with base 16: b''
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/local/Cellar/python3/3.5.2_3/Frameworks/Python.framework/Versions/3.5/lib/python3.5/http/client.py", line 558, in _readall_chunked
chunk_left = self._get_chunk_left()
File "/usr/local/Cellar/python3/3.5.2_3/Frameworks/Python.framework/Versions/3.5/lib/python3.5/http/client.py", line 543, in _get_chunk_left
raise IncompleteRead(b'')
http.client.IncompleteRead: IncompleteRead(0 bytes read)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "MoviesToDb.py", line 91, in <module>
html = r.read()
File "/usr/local/Cellar/python3/3.5.2_3/Frameworks/Python.framework/Versions/3.5/lib/python3.5/http/client.py", line 455, in read
return self._readall_chunked()
File "/usr/local/Cellar/python3/3.5.2_3/Frameworks/Python.framework/Versions/3.5/lib/python3.5/http/client.py", line 565, in _readall_chunked
raise IncompleteRead(b''.join(value))
http.client.IncompleteRead: IncompleteRead(17891 bytes read)
回溯(最近一次呼叫最后一次):
文件“/usr/local/cillar/python3/3.5.2_3/Frameworks/Python.framework/Versions/3.5/lib/python3.5/http/client.py”,第541行,在左下角
chunk\u left=self.\u read\u next\u chunk\u size()
文件“/usr/local/cillar/python3/3.5.2\u 3/Frameworks/Python.framework/Versions/3.5/lib/python3.5/http/client.py”,第508行,以“读取下一个块大小”
返回整数(第16行)
ValueError:基为16:b''的int()的文本无效
在处理上述异常期间,发生了另一个异常:
回溯(最近一次呼叫最后一次):
文件“/usr/local/ceral/python3/3.5.2_3/Frameworks/Python.framework/Versions/3.5/lib/python3.5/http/client.py”,第558行,在“readall”分块中
chunk\u left=self.\u获取\u chunk\u left()
文件“/usr/local/cillar/python3/3.5.2_3/Frameworks/Python.framework/Versions/3.5/lib/python3.5/http/client.py”,第543行,在左下角
提升不完全读取(b“”)
http.client.IncompleteRead:IncompleteRead(读取0字节)
在处理上述异常期间,发生了另一个异常:
回溯(最近一次呼叫最后一次):
文件“MoviesToDb.py”,第91行,在
html=r.read()
文件“/usr/local/ceral/python3/3.5.2_3/Frameworks/Python.framework/Versions/3.5/lib/python3.5/http/client.py”,第455行,已读
返回self.\u readall\u chunked()
文件“/usr/local/ceral/python3/3.5.2_3/Frameworks/Python.framework/Versions/3.5/lib/python3.5/http/client.py”,第565行,在“readall”分块中
引发未完成读取(b“”。加入(值))
http.client.IncompleteRead:IncompleteRead(读取17891字节)
我想知道:1)这个错误是什么意思
2)如何防止它?尝试导入:
from http.client import IncompleteRead
并将其添加到脚本中:
except IncompleteRead:
# Oh well, reconnect and keep trucking
continue
这是因为http协议的服务器是1.0版本,而python使用1.1版本。解决方案是分配客户端的协议版本,如下所示
Python3版本请添加:
> import http.client
> http.client.HTTPConnection._http_vsn = 10
> http.client.HTTPConnection._http_vsn_str = 'HTTP/1.0'
> import http.client
> http.client.HTTPConnection._http_vsn = 10
> http.client.HTTPConnection._http_vsn_str = 'HTTP/1.0'
Python2版本请添加:
> import http.client
> http.client.HTTPConnection._http_vsn = 10
> http.client.HTTPConnection._http_vsn_str = 'HTTP/1.0'
> import http.client
> http.client.HTTPConnection._http_vsn = 10
> http.client.HTTPConnection._http_vsn_str = 'HTTP/1.0'
请参阅参考资料如何将其与docker on airflow结合?现在我在下载docker层时遇到了这个问题。