【Python】Python进阶系列教程--requests 模块(十八)

news/2024/11/29 5:26:42/

文章目录

  • 前言
  • requests 方法

前言

往期回顾:

  • Python进阶系列教程-- Python3 正则表达式(一)
  • Python进阶系列教程-- Python3 CGI编程(二)
  • Python进阶系列教程-- Python3 MySQL - mysql-connector 驱动(三)
  • Python进阶系列教程-- Python3 MySQL 数据库连接 - PyMySQL 驱动
  • Python进阶系列教程-- Python3 网络编程(五)
  • Python进阶系列教程-- Python3 SMTP发送邮件(六)
  • Python进阶系列教程-- Python3 多线程(七)
  • Python进阶系列教程-- Python3 XML 解析(八)
  • Python进阶系列教程-- Python3 JSON 数据解析(九)
  • Python进阶系列教程-- Python3 日期和时间(十)
  • Python进阶系列教程-- 内置函数(十一)
  • Python进阶系列教程-- MongoDB(十二)
  • Python进阶系列教程-- urllib(十三)
  • Python进阶系列教程-- uWSGI 安装配置(十四)
  • Python进阶系列教程–pip(十五)
  • Python进阶系列教程–operator 模块(十六)
  • Python进阶系列教程–math 模块(十七)

Python requests 是一个常用的 HTTP 请求库,可以方便地向网站发送 HTTP 请求,并获取响应结果。

requests 模块比 urllib 模块更简洁。

使用 requests 发送 HTTP 请求需要先导入 requests 模块:

import requests

导入后就可以发送 HTTP 请求,使用 requests 提供的方法向指定 URL 发送 HTTP 请求,例如:

实例

# 导入 requests 包
import requests# 发送请求
x = requests.get('https://www.demo.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.demo.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.demo.com/try/ajax/json_demo.json')# 返回 json 数据
print(x.json())

输出结果如下:

{'name': '网站', 'num': 3, 'sites': [{'name': 'Google', 'info': ['Android', 'Google 搜索', 'Google 翻译']},{'name': 'Taobao', 'info': ['淘宝', '网购']}]}

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 发送指定的请求方法

使用 requests.request() 发送 get 请求:

实例

# 导入 requests 包
import requests# 发送请求
x = requests.request('get', 'https://www.demo.com/')# 返回网页内容
print(x.status_code)

输出结果如下:

200

设置请求头:

实例

# 导入 requests 包
import requestskw = {'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.demo.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.demo.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.demo.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 请求带参数:

实例

# 导入 requests 包
import requests# 表单参数,参数名为 fname 和 lname
myobj = {'fname': 'demo','lname': 'Boy'}# 发送请求
x = requests.post('https://www.demo.com/try/ajax/demo_post2.php', data = myobj)# 返回网页内容
print(x.text)

输出结果如下:

<p style='color:red;'>你好,demoBoy,今天过得怎么样?</p>

附加请求参数
发送请求我们可以在请求中附加额外的参数,例如请求头、查询参数、请求体等,例如:

headers = {'User-Agent': 'Mozilla/5.0'}  # 设置请求头
params = {'key1': 'value1', 'key2': 'value2'}  # 设置查询参数
data = {'username': 'example', 'password': '123456'}  # 设置请求体
response = requests.post('https://www.demo.com', headers=headers, params=params, data=data)

上述代码发送一个 POST 请求,并附加了请求头、查询参数和请求体。

除了基本的 GET 和 POST 请求外,requests 还支持其他 HTTP 方法,如 PUT、DELETE、HEAD、OPTIONS 等。


http://www.ppmy.cn/news/358050.html

相关文章

机械表矢量素材分享(三眼表盘意向:过去、现在、未来)

【机械表矢量素材分享】 https://www.freepik.com/free-vec … -arrow_13031502.htm 图1是一些机械钟表的矢量素材&#xff0c;第1排第2列就是【三眼表盘】的矢量图案。 图2是《Charlotte》OP中的机械手表场景&#xff0c;表盘为【三眼表盘】。 图3是《假面骑士时王》中逢魔时…

东芝停电事件可能导致Q3闪存市场价格波动

虽然这次停电事故只有短短的13分钟&#xff0c;但是13分钟足以改变闪存市场的行情了&#xff0c;从东芝方面给出的预期来看工厂停工时间高达1个月&#xff0c;对东芝产能影响很大。 至于合作方西数&#xff0c;他们给出的损失是6EB容量的闪存没了&#xff0c;假如以比较主流的5…

名表依波路borel_依波路(Ernest Borel)手表_价格及图片_什么档次-金投奢侈品网-金投网...

官方网站&#xff1a;www.ernestborel.ch Ernest Borel(依波路)名表品牌创立于1856年&#xff0c;“钟表王国”瑞士纽察图&#xff0c;年轻的朱尔斯-波莱尔凭着缔造完善经典的信念&#xff0c;开始了他漫长的钟表制造生涯。1859年&#xff0c;他携妻弟保罗高华士创立了Borel an…

吉时利2000万用表说明书

Keithley 2000型万用表是一款高精度、高性能的电子测量仪器&#xff0c;广泛应用于电子、通信、航空、航天、计算机等领域的测试和测量工作中。下面是Keithley 2000型万用表的一些说明书&#xff1a; 外观和设计&#xff1a;Keithley 2000型万用表外观简洁美观&#xff0c;采用…

怎么判断机械表上满弦_机械手表上弦是什么意思,怎么看手表有没有上满弦

原标题&#xff1a;机械手表上弦是什么意思&#xff0c;怎么看手表有没有上满弦 机械表是依靠发条上弦来提供动力&#xff0c;通过齿轮转动来计时。即使是 自动机械表 &#xff0c;也要靠运动来提供动力。今天聚奢网小编和大家来说说关于机械表上弦的一些问题。 机械手表上弦是…

东芝复印机2303出现f070_东芝复印机维修代码大全

东芝复印机维修代码大全 wV }l }y 9 同时按 0 和 1 键打开电源 面板指示灯全部点亮&#xff0c;按清除 / 停止键解除 :Wot(DtBtL 同时按 0 和 2 键打开电源 机器进入老化方式&#xff0c;显示 AG &#xff0c;同时按 09 键解除 N c(, x-2 同时按 0 3 或 04 键打开电源 机器进入…

【雅特力】单片机AT32F421系列入门资料

1. 命名规则 AT32 全系列MCU选型手册.PDF AT32F421F8P7 AT32F421C8T7 (雅特力厂商送样的两个芯片版本) 2. 数据手册 【 数据手册】AT32F421系列引脚定义、电气特性与封装特性.PDF 3. 技术手册 【技术手册】AT32F421系列各外设(Peripheral)完整说明与各寄存器(Register)定…

移动硬盘行货检测以东芝为例

由七喜公司代理的东芝原装正品移动硬盘&#xff0c;即日起已经全面启用新技术激光防伪标!为所有支持七喜和东芝的消费者提供更严密的防伪保障!除了全新技术的防伪标志外&#xff0c;消费者还可以通过外包装、硬盘盘身和硬盘内部数据三组S/N编码&#xff0c;来确定您购买的东芝移…