python 的urllib 库如何接收 chunk类型的返回数据
时间: 2024-03-21 10:42:12 浏览: 107
使用urllib,request爬取ajax动态页面信息(爬取响应json文件)
在Python的urllib库中,可以通过urllib.request.urlopen()方法发起HTTP请求并接收响应数据。对于chunked编码的响应数据,可以通过设置HTTP头部字段"Transfer-Encoding: chunked",并使用HTTPResponse类的chunked属性来接收分块的数据。
示例代码如下:
```
import urllib.request
url = "http://example.com"
req = urllib.request.Request(url)
req.add_header('Transfer-Encoding', 'chunked')
with urllib.request.urlopen(req) as response:
if response.getheader('Transfer-Encoding') == 'chunked':
while True:
chunk_size = int(response.readline(), 16)
if chunk_size == 0:
break
chunk = response.read(chunk_size)
# 处理每个分块的数据
```
这段代码中,我们创建了一个Request对象,并添加了"Transfer-Encoding: chunked"头部字段。然后使用urlopen()方法发起请求,返回的response对象可以使用chunked属性来判断响应数据是否是分块编码的,并通过循环读取每个分块的数据。
需要注意的是,如果服务器返回的响应头中没有"Transfer-Encoding: chunked"字段,那么HTTPResponse对象的chunked属性会被设置为False,此时不能使用分块编码的方式来读取响应数据。
阅读全文