requests 库是一个功能强大且易于使用的 HTTP 请求库,适用于各种网络请求任务。它简化了 HTTP 请求的发送过程,并提供了丰富的功能来处理各种网络请求和响应。
1.安装
首先,你需要安装 requests 库。如果你还没有安装,可以使用 pip 安装:
2.请求
安装完毕后先导入模块:
import requests
导入模块之后我们可以使用requests请求库方法。
请求方法
方法 | 描述 |
---|---|
delete(url, args) | 发送 DELETE 请求到指定 url |
get(url, params, args) | 发送 GET 请求到指定 url |
head(url, args) | 发送 HEAD 请求到指定 url |
patch(url, data, args) | 发送 PATCH 请求到指定 url |
post(url, data, json, args) | 发送 POST 请求到指定 url |
put(url, data, args) | 发送 PUT 请求到指定 url |
request(method, url, args) | 向指定的 url 发送指定的请求方法 |
get请求
图中可以看到,我们要请求csdn网址,需要用到的是 get 请求方式 ,且状态码为 200 时表示请求成功。
import requests
url = "http://www.csdn.net/"
res = requests.get(url)
print(res.status_code)
返回结果是 200 ,请求成功。
还可以给 get 请求添加参数 params、headers。
import requests
url = "http://www.csdn.net/"
params = {
"pn": 12,
"size": 20
}
headers = {
"User-Agent": 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 '
'Safari/537.36'
}
res = requests.get(url, params=params, headers=headers)
print(res.status_code)
返回结果为 200 ,请求成功。
post请求
import requests
x = requests.post('https://www.runoob.com/try/ajax/demo_post.php')
print(x.text)
# 输出结果如下:
# <p style='color:red;'>本内容是使用 POST 方法请求的。</p><p style='color:red;'>请求时间:
# 2022-05-26 17:30:47</p>
post 请求也可以携带参数
import requests
myobj = {'fname': 'RUNOOB','lname': 'Boy'}
x = requests.post('https://www.runoob.com/try/ajax/demo_post2.php', data = myobj)
print(x.text)
# 输出结果如下:
# <p style='color:red;'>你好,RUNOOB Boy,今天过得怎么样?</p>
请求响应
每次调用 requests 请求之后,会返回一个 response 对象,该对象包含了具体的响应信息,如状态码、响应头、响应内容等:
print(response.status_code) # 获取响应状态码
print(response.headers) # 获取响应头
print(response.content) # 获取响应内容
更多响应信息如下:
属性或方法 | 说明 |
---|---|
apparent_encoding | 编码方式 |
close() | 关闭与服务器的连接 |
content | 返回响应的内容,以字节为单位 |
cookies | 返回一个 CookieJar 对象,包含了从服务器发回的 cookie |
elapsed | 返回一个 timedelta 对象,包含了从发送请求到响应到达之间经过的时间量,可以用于测试响应速度。比如 r.elapsed.microseconds 表示响应到达需要多少微秒。 |
encoding | 解码 r.text 的编码方式 |
headers | 返回响应头,字典格式 |
history | 返回包含请求历史的响应对象列表(url) |
is_permanent_redirect | 如果响应是永久重定向的 url,则返回 True,否则返回 False |
is_redirect | 如果响应被重定向,则返回 True,否则返回 False |
iter_content() | 迭代响应 |
iter_lines() | 迭代响应的行 |
json() | 返回结果的 JSON 对象 (结果需要以 JSON 格式编写的,否则会引发错误) |
links | 返回响应的解析头链接 |
next | 返回重定向链中下一个请求的 PreparedRequest 对象 |
ok | 检查 "status_code" 的值,如果小于400,则返回 True,如果不小于 400,则返回 False |
raise_for_status() | 如果发生错误,方法返回一个 HTTPError 对象 |
reason | 响应状态的描述,比如 "Not Found" 或 "OK" |
request | 返回请求此响应的请求对象 |
status_code | 返回 http 的状态码,比如 404 和 200(200 是 OK,404 是 Not Found) |
text | 返回响应的内容,unicode 类型数据 |
url | 返回响应的 URL |