1. urllib模块
urllib是Python标准库中提供的一个用于处理URL请求的模块,它包含四个子模块:urllib.request、urllib.parse、urllib.error和urllib.robotparser。这些子模块分别用于发送HTTP请求、解析URL、处理错误和解析robots.txt文件。
使用urllib发送HTTP请求的基本步骤如下:
1.1 发送GET请求
使用urllib模块发送GET请求可以通过调用urllib.request.urlopen()方法来实现:
import urllib.request
response = urllib.request.urlopen('http://www.example.com')
html = response.read()
print(html)
在上述代码中,urlopen()方法接受一个URL作为参数,返回一个类文件对象,可以通过调用read()方法获取服务器响应的内容。
1.2 发送POST请求
要发送POST请求,需要构造一个包含POST数据的请求对象,并通过调用urlopen()方法发送请求:
import urllib.request
import urllib.parse
data = urllib.parse.urlencode({'key': 'value'}).encode('utf-8')
request = urllib.request.Request('http://www.example.com', data=data)
response = urllib.request.urlopen(request)
html = response.read()
print(html)
在上述代码中,使用urllib.parse.urlencode()方法将POST数据转换为URL编码的字符串,并使用encode()方法将字符串转换为字节流。然后使用urllib.request.Request()方法创建一个请求对象,通过传入URL和POST数据,最后通过调用urllib.request.urlopen()方法发送请求。
2. requests模块
requests是Python第三方库,使用它可以更方便地发送HTTP请求。
使用requests发送HTTP请求的基本步骤如下:
2.1 安装requests
要使用requests模块,首先需要安装它。可以使用pip命令来安装:
pip install requests
2.2 发送GET请求
使用requests模块发送GET请求可以直接调用get()方法:
import requests
response = requests.get('http://www.example.com')
html = response.text
print(html)
在上述代码中,get()方法接受一个URL作为参数,并返回一个Response对象,可以通过调用text属性获取服务器响应的内容。
2.3 发送POST请求
要发送POST请求,需要构造一个包含POST数据的字典对象,并通过调用post()方法发送请求:
import requests
data = {'key': 'value'}
response = requests.post('http://www.example.com', data=data)
html = response.text
print(html)
在上述代码中,post()方法接受一个URL和一个字典对象作为参数,并返回一个Response对象,可以通过调用text属性获取服务器响应的内容。
总结
urllib和requests是两个常用的Python网络请求模块,它们分别提供了不同的功能和使用方法。urllib是Python标准库中自带的模块,可以发送HTTP请求、解析URL等;而requests是第三方库,使用起来更方便,可以通过调用get()和post()方法发送GET和POST请求。
使用urllib发送GET请求的基本步骤是先调用urlopen()方法发送请求,再通过调用read()方法获取响应的内容;发送POST请求的基本步骤是先将POST数据转换为URL编码的字符串,再使用Request()方法创建一个请求对象,最后调用urlopen()方法发送请求。
使用requests发送HTTP请求的基本步骤是先安装requests库,再调用get()方法发送GET请求,或者调用post()方法发送POST请求。发送GET请求时,直接传入URL作为get()方法的参数,并通过调用text属性获取响应的内容;发送POST请求时,将POST数据封装到一个字典对象中,并通过data参数传递给post()方法,同样使用text属性获取响应的内容。