使用Python自带的http.client模块应该怎么编程
时间: 2024-02-13 15:05:12 浏览: 21
使用Python自带的`http.client`模块可以更方便地进行HTTP请求和响应的处理,以下是使用该模块来获取目标网站的响应报文,并解析出资源对象序列及对应的大小序列的示例代码:
```python
import http.client
# 建立与目标网站的连接
conn = http.client.HTTPConnection('www.gzhu.edu.cn')
# 发送HTTP GET请求
conn.request('GET', '/')
# 获取响应报文
response = conn.getresponse()
content_length = response.getheader('Content-Length')
# 获取资源对象序列及对应的大小序列
resource_objects = []
size_list = []
content_length = int(content_length) if content_length else None
while content_length is None or content_length > 0:
data = response.read(1024)
if not data:
break
size = len(data)
if content_length is not None:
content_length -= size
resource_objects.append(data)
size_list.append(size)
# 输出结果
for i in range(len(resource_objects)):
print('Resource object:', i+1)
print(resource_objects[i])
print('Size:', size_list[i])
print()
```
该代码使用`http.client.HTTPConnection()`方法建立与目标网站的连接,并使用`request()`方法发送HTTP GET请求。然后使用`getresponse()`方法获取响应报文,并使用`getheader()`方法获取响应报文头中的`Content-Length`字段,以便在后面解析响应报文时计算剩余数据的长度。
解析响应报文的方式与之前的方法类似,使用`read()`方法读取响应报文中的数据,并计算每个资源对象的大小。需要注意的是,如果响应报文中没有`Content-Length`字段,则需要在读取每个资源对象时判断是否已经读取完毕。
最后使用`for`循环输出每个资源对象及其对应的大小。