urllib2模块详解:从发起请求到获取响应
urllib2是Python标准库中的一个模块,它可以用来发送HTTP请求并获取响应。本文将详细介绍urllib2模块的使用方法,包括发起请求、配置请求信息、处理响应等,并附上使用例子演示其具体用法。
1. 发起请求:
要使用urllib2发送HTTP请求,首先需要创建一个Request对象,用来存储请求的URL、头部信息、请求方法等。创建Request对象的方式有两种:
a. 使用URL字符串创建Request对象:
可以直接使用URL字符串创建Request对象,如下所示:
import urllib2 url = 'http://www.example.com' request = urllib2.Request(url)
在上述代码中,首先定义了一个URL字符串,然后使用该字符串创建了一个Request对象。
b. 使用URL和参数创建Request对象:
也可以通过传递一个URL和参数字典来创建Request对象,如下所示:
import urllib2
url = 'http://www.example.com'
params = {'param1': 'value1', 'param2': 'value2'}
data = urllib.urlencode(params)
request = urllib2.Request(url, data) # POST请求
在上述代码中,首先定义了一个URL字符串和一个参数字典,然后使用urlencode方法将参数字典编码成URL参数字符串,最后根据URL和参数字符串创建了一个Request对象。
2. 配置请求信息:
对于创建好的Request对象,可以通过设置其属性来配置请求的头部信息、请求方法等。下面是一些常用的配置方法:
a. 设置请求头部信息:
可以使用add_header方法来设置请求头部信息,如下所示:
request.add_header('User-Agent', 'Mozilla/5.0 (Windows NT 10.0;Win64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3')
在上述代码中,使用add_header方法给Request对象添加了一个名为'User-Agent'的头部字段。
b. 设置请求方法:
可以通过设置Request对象的method属性来设置请求方法,默认为GET方法,也可以设置为POST方法,如下所示:
request.method = 'POST'
在上述代码中,将Request对象的请求方法设置为POST。
c. 设置其他请求信息:
除了上述方法之外,还可以设置其他的请求信息,比如超时时间、认证信息等。
3. 发送请求和获取响应:
发送请求并获取响应,可以使用urlopen方法,如下所示:
response = urllib2.urlopen(request)
在上述代码中,使用urlopen方法发送Request对象,并将响应结果赋值给response变量。
4. 处理响应:
获取到响应结果后,可以对其进行处理,常用的处理方法有以下几种:
a. 读取响应内容:
可以使用read方法读取响应内容,将其作为字符串返回,如下所示:
content = response.read()
在上述代码中,使用read方法将响应内容作为字符串读取出来,并赋值给content变量。
b. 获取响应头部信息:
可以使用info方法获取响应的头部信息,如下所示:
headers = response.info()
在上述代码中,使用info方法获取响应的头部信息,并将其赋值给headers变量。
c. 获取响应状态码:
可以使用getcode方法获取响应的状态码,如下所示:
status_code = response.getcode()
在上述代码中,使用getcode方法获取响应的状态码,并将其赋值给status_code变量。
下面是一个使用urllib2模块发送HTTP请求并获取响应的完整例子:
import urllib2
# 创建Request对象
url = 'http://www.example.com'
params = {'param1': 'value1', 'param2': 'value2'}
data = urllib.urlencode(params)
request = urllib2.Request(url, data)
# 设置请求头部信息
request.add_header('User-Agent', 'Mozilla/5.0 (Windows NT 10.0;Win64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3')
# 发送请求并获取响应
response = urllib2.urlopen(request)
# 处理响应结果
content = response.read()
headers = response.info()
status_code = response.getcode()
print(content)
print(headers)
print(status_code)
在上述代码中,首先创建了一个Request对象,然后设置了请求头部信息,接着发送请求并获取响应,最后打印出响应内容、头部信息和状态码。
总结:本文详细介绍了urllib2模块的使用方法,包括发起请求、配置请求信息、处理响应等,并提供了一个完整的例子演示其具体用法。通过掌握这些知识,我们可以方便地使用urllib2模块发送HTTP请求并获取响应。
