网络请求是数据获取和网络通信的基础。Python的urllib模块,分为urllib.request和urllib.parse等子模块,在Python 3中进行了整合,提供了一套强大的网络请求工具集。
1. urllib模块概览
urllib模块用于处理网络连接,支持HTTP和FTP请求。它提供了请求的构造、发送和响应处理的完整流程。
2. 构造请求
使用urllib.request.Request
可以构造HTTP请求。通过传入URL、headers和data参数,可以定制请求方法、头部信息和发送数据。
import urllib.request
url = 'http://www.example.com'
headers = {'User-Agent': 'Mozilla/5.0'}
request = urllib.request.Request(url, headers=headers)
3. 发送请求
通过urllib.request.urlopen
方法发送请求,并获取响应对象。
response = urllib.request.urlopen(request)
html = response.read().decode('utf-8')
4. 处理响应
响应对象提供了多种方法来读取和解析返回的数据,如response.read()
、response.geturl()
等。
5. POST请求示例
对于POST请求,urllib模块同样提供了支持,可以通过设置data参数来发送表单数据。
data = {'key': 'value'} # 表单数据
data = urllib.parse.urlencode(data).encode('utf-8')
request = urllib.request.Request(url, data=data, method='POST')