Python中的HTTP请求函数,如何使用
Python中常用的HTTP请求函数有两个,分别是requests和urllib,它们都可以用于发送HTTP请求,获取返回数据。
requests是一个精简简单的HTTP库,它是基于urllib3开发的,所以功能上比urllib更加强大。使用requests函数发送HTTP请求关键代码如下:
1. 发送GET请求:
import requests
r = requests.get("http://www.baidu.com")
print(r.status_code)
print(r.text)
上述代码中,通过requests库的get函数,传入请求地址。通过response对象的status_code属性,可获取响应的状态码。响应的页面内容,可以通过response对象的text属性获取。
2. 发送POST请求:
import requests
payload = {"key1": "value1", "key2": "value2"}
r = requests.post("http://httpbin.org/post", data=payload)
print(r.status_code)
print(r.text)
该代码实现了发送POST请求并传递参数,请求地址是http://httpbin.org/post,参数使用字典类型的payload传递。与GET请求类似,POST请求的状态码和响应结果都可以通过response对象获取。
urllib
urllib是Python自带的一个HTTP请求库,通过其中的urlopen函数,可以实现向指定 URL 发送请求,获取响应结果。urlopen函数支持HTTP、HTTPS、FTP、文件等多种类型的URL传输协议。
1. 发送GET请求
from urllib import request
response = request.urlopen('http://www.baidu.com')
print(response.status)
print(response.read())
2. 发送POST请求
from urllib import request, parse
url = 'http://httpbin.org/post'
data = {
"key1": "value1",
"key2": "value2"
}
data = parse.urlencode(data).encode('utf-8')
req = request.Request(url, data=data)
response = request.urlopen(req)
print(response.read())
该代码实现了发送POST请求,并传递参数。请求地址是http://httpbin.org/post,参数使用字典类型的data传递,同时需要使用parse模块中的urlencode进行编码,将字典类型的数据转为字符串类型,再通过encode方法将字符串类型的数据转为二进制类型传递给请求体。与GET请求类似,POST请求的状态码和响应结果都可以通过response对象获取。
总结
上述代码演示了requests和urllib两种Python中常用的HTTP请求函数的基本用法,如何发送GET、POST请求,并获取响应结果。两种函数在功能上都比较强大,适用于不同场景。开发者可以根据实际需求,选择使用其中的一个或两个来完成网站爬虫、数据采集、接口测试等相关工作。
