Python requests 是一个常用的 HTTP 请求库,可以方便地向网站发送 HTTP 请求,并获取响应结果。
网站建设哪家好,找成都创新互联!专注于网页设计、网站建设、微信开发、小程序定制开发、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了寒亭免费建站欢迎大家使用!
requests 模块比 模块更简洁。
使用 requests 发送 HTTP 请求需要先导入 requests 模块:
import requests
导入后就可以发送 HTTP 请求,使用 requests 提供的方法向指定 URL 发送 HTTP 请求,例如:
# 导入 requests 包
import requests
# 发送请求
x
= requests.
get
(
'https://www.runoob.com/'
)
# 返回网页内容
print
(x.
text
)
每次调用 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 |
# 导入 requests 包
import requests
# 发送请求
x
= requests.
get
(
'https://www.runoob.com/'
)
# 返回 http 的状态码
print
(x.
status_code
)
# 响应状态的描述
print
(x.
reason
)
# 返回编码
print
(x.
apparent_encoding
)
输出结果如下:
200 OK utf-8
请求 json 数据文件,返回 json 内容:
# 导入 requests 包
import requests
# 发送请求
x
= requests.
get
(
'https://www.runoob.com/try/ajax/json_demo.json'
)
# 返回 json 数据
print
(x.
json
(
)
)
输出结果如下:
{'name': '网站', 'num': 3, 'sites': [{'name': 'Google', 'info': ['Android', 'Google 搜索', 'Google 翻译']}, {'name': 'Runoob', 'info': ['菜鸟教程', '菜鸟工具', '菜鸟微信']}, {'name': 'Taobao', 'info': ['淘宝', '网购']}]}
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 发送指定的请求方法 |
使用 requests.request() 发送 get 请求:
# 导入 requests 包
import requests
# 发送请求
x
= requests.
request
(
'get'
,
'https://www.runoob.com/'
)
# 返回网页内容
print
(x.
status_code
)
输出结果如下:
200
设置请求头:
# 导入 requests 包
import requests
kw
=
{
's':
'python 教程'
}
# 设置请求头
headers
=
{
"User-Agent":
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"
}
# params 接收一个字典或者字符串的查询参数,字典类型自动转换为url编码,不需要urlencode()
response
= requests.
get
(
"https://www.runoob.com/"
, params
= kw
, headers
= headers
)
# 查看响应状态码
print
(response.
status_code
)
# 查看响应头部字符编码
print
(response.
encoding
)
# 查看完整url地址
print
(response.
url
)
# 查看响应内容,response.text 返回的是Unicode格式的数据
print
(response.
text
)
输出结果如下:
200 UTF-8 https://www.runoob.com/?s=python+%E6%95%99%E7%A8%8B ... 其他内容...
post() 方法可以发送 POST 请求到指定 url,一般格式如下:
requests.post(url, data={key: value}, json={key: value}, args)
url 请求 url。
data 参数为要发送到指定 url 的字典、元组列表、字节或文件对象。
json 参数为要发送到指定 url 的 JSON 对象。
args 为其他参数,比如 cookies、headers、verify等。
# 导入 requests 包
import requests
# 发送请求
x
= requests.
post
(
'https://www.runoob.com/try/ajax/demo_post.php'
)
# 返回网页内容
print
(x.
text
)
输出结果如下:
本内容是使用 POST 方法请求的。
请求时间: 2022-05-26 17:30:47
post 请求带参数:
# 导入 requests 包
import requests
# 表单参数,参数名为 fname 和 lname
myobj
=
{
'fname':
'RUNOOB'
,
'lname':
'Boy'
}
# 发送请求
x
= requests.
post
(
'https://www.runoob.com/try/ajax/demo_post2.php'
, data
= myobj
)
# 返回网页内容
print
(x.
text
)
输出结果如下:
你好,RUNOOB Boy,今天过得怎么样?
发送请求我们可以在请求中附加额外的参数,例如请求头、查询参数、请求体等,例如:
headers = {'User-Agent': 'Mozilla/5.0'} # 设置请求头 params = {'key1': 'value1', 'key2': 'value2'} # 设置查询参数 data = {'username': 'example', 'password': '123456'} # 设置请求体 response = requests.post('https://www.runoob.com', headers=headers, params=params, data=data)
上述代码发送一个 POST 请求,并附加了请求头、查询参数和请求体。
除了基本的 GET 和 POST 请求外,requests 还支持其他 HTTP 方法,如 PUT、DELETE、HEAD、OPTIONS 等。
名称栏目:Pythonrequests模块
链接分享:http://www.csdahua.cn/qtweb/news49/523799.html
网站建设、网络推广公司-快上网,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 快上网