python——requests

Python requests

一、什么是requests库?

Python的requests库是一个用于发送HTTP请求的第三方库。它简单易用,封装了许多底层操作,能够帮助开发者更轻松地与Web服务进行通信。requests库支持发送各种HTTP请求,比如GET、POST、PUT、DELETE等。

requests库的特点
  • 简单易用:与Python的标准库urllib相比,requests更易于使用。
  • 功能强大:支持HTTP方法、Cookies、会话、SSL验证等功能。
  • 自动处理编码:可以自动检测和处理编码问题。
  • 丰富的扩展性:支持自定义头信息、参数和认证方式。
安装requests

在使用requests之前,需要确保已安装该库。可以使用以下命令安装:

pip install requests

二、HTTP请求的基本概念

在了解requests库的API之前,首先需要了解一些基本的HTTP概念,这有助于理解如何与Web服务交互。

  • HTTP方法:常用的有GET、POST、PUT、DELETE等,分别对应不同的操作。比如GET用于获取资源,POST用于提交数据。
  • URL:统一资源定位符(Uniform Resource Locator),是访问资源的地址。
  • 请求头(Headers):发送请求时可以包含的元数据,如用户代理、内容类型等。
  • 请求体(Body):主要用于POST、PUT等请求,包含要发送的数据。
  • 响应(Response):服务器返回的内容,包括状态码、响应头、响应体等。

三、requests库的基本API

1. 发送GET请求

GET请求通常用于从服务器获取数据。它将参数附加在URL的查询字符串中。

语法

import requestsresponse = requests.get(url, params=None, headers=None)

参数说明

  • url: 请求的URL地址。
  • params: (可选)字典或元组,附加在URL后的查询参数。
  • headers: (可选)字典,包含发送的请求头信息。

示例

response = requests.get('https://jsonplaceholder.typicode.com/posts', params={'userId': 1})
print(response.status_code)  # 打印状态码
print(response.json())       # 以JSON格式输出响应内容

使用场景

  • 获取网页内容或API返回的数据。
  • 在数据采集和爬虫中,通过GET请求获取目标网页的HTML。
2. 发送POST请求

POST请求用于向服务器提交数据,比如提交表单或者上传文件。

语法

response = requests.post(url, data=None, json=None, headers=None)

参数说明

  • url: 请求的URL地址。
  • data: (可选)字典或元组,表单数据将作为请求体发送。
  • json: (可选)字典或列表,JSON数据将作为请求体发送。
  • headers: (可选)字典,包含发送的请求头信息。

示例

payload = {'username': 'test', 'password': '123456'}
response = requests.post('https://httpbin.org/post', data=payload)
print(response.json())  # 以JSON格式输出响应内容

使用场景

  • 提交数据给服务器,比如登录表单、评论、上传文件等。
  • 爬虫中模拟表单提交,获取特定用户的数据。
3. 发送其他请求 (PUT, DELETE, HEAD)

除了GET和POST请求,requests库还支持其他HTTP方法。

PUT请求

response = requests.put('https://jsonplaceholder.typicode.com/posts/1', data={'title': 'new title'})
print(response.status_code)

用于更新资源,通常与GET、POST结合使用。

DELETE请求

response = requests.delete('https://jsonplaceholder.typicode.com/posts/1')
print(response.status_code)

用于删除资源。

HEAD请求

response = requests.head('https://jsonplaceholder.typicode.com/posts/1')
print(response.headers)

类似GET,但只请求响应头而不下载响应体,通常用于检查链接是否可用。


四、处理响应

使用requests库发送请求后,会得到一个响应对象,可以从中提取有用的信息。

1. 获取响应状态码

状态码用于指示请求的结果,常见的有200(成功)、404(未找到)、500(服务器错误)等。

response = requests.get('https://jsonplaceholder.typicode.com/posts/1')
print(response.status_code)  # 输出状态码
2. 获取响应内容

响应的内容可以是HTML、JSON等格式,可以根据需要进行处理。

print(response.text)  # 以文本形式输出内容
print(response.json())  # 以JSON格式输出内容
3. 获取响应头
print(response.headers)  # 输出响应头

五、高级功能

1. 会话处理 (Session)

requests库提供了会话(Session)对象,可以跨请求保存某些参数,如Cookies。适用于需要连续多次请求并保持状态的场景。

示例

session = requests.Session()
session.get('https://httpbin.org/cookies/set/sessioncookie/123456789')
response = session.get('https://httpbin.org/cookies')
print(response.json())  # 会返回已设置的cookie
2. SSL证书验证

默认情况下,requests会验证SSL证书,可以通过参数verify关闭此功能。

response = requests.get('https://expired.badssl.com/', verify=False)
print(response.status_code)
3. 超时设置

可以使用timeout参数设置请求的超时时间,避免长时间等待。

response = requests.get('https://httpbin.org/delay/3', timeout=2)  # 设置2秒超时

六、数据采集与爬虫应用中的使用

在数据采集和简单爬虫开发中,requests库是获取网页内容的利器。

1. 获取网页HTML

可以通过GET请求获取网页的HTML内容,然后使用解析库如BeautifulSoup提取信息。

response = requests.get('https://example.com')
html_content = response.text
2. 模拟表单提交

很多网站的数据交互是通过POST请求进行的,requests库可以帮助我们模拟表单提交。

payload = {'username': 'user', 'password': 'pass'}
response = requests.post('https://example.com/login', data=payload)
3. 处理Cookies

有些网站使用Cookies保存会话信息,requests库可以方便地管理和发送Cookies。

session = requests.Session()
session.get('https://example.com/login')
response = session.get('https://example.com/profile')
4. 处理分页数据

在抓取多个页面的数据时,常需要处理分页,可以通过循环发送GET请求来实现。

for i in range(1, 6):  # 假设有5页数据response = requests.get(f'https://example.com/data?page={i}')print(response.json())

七、总结

  • requests库简化了HTTP请求的发送和处理。
  • 支持多种HTTP方法及高级功能,如会话、SSL验证、超时等。
  • 在数据采集和爬虫中非常实用,尤其适合初学者快速上手。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/52640.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《机器学习》 SVM支持向量机 推导、参数解析、可视化实现

目录 一、SVM支持向量机 1、什么是SVM 例如: 2、SVM的主要特点是: 二、SVM方程 1、超平面方程 2、标签问题 3、决策函数: 符号函数: 整合: 4、距离问题 1)点到直线距离 2)点到平面…

关于喷墨打印:液滴喷射及基材影响的那些事儿

大家好,今天我们来探讨一篇关于液滴喷射在生物应用中相关知识的文章——《Understanding droplet jetting on varying substrate for biological applications》是发表于《International Journal of Bioprinting》。在生物打印领域,了解液滴在不同基材上…

【Pytorch】Linear 层,举例:相机参数和Instance Feaure通过Linear层生成Group Weights

背景 看论文看到这个pipeline,对于相机参数和Instance Fature 的融合有点兴趣,研究如下: Linear 层 Linear 层是最基本的神经网络层之一,也称为全连接层。它将输入与每个输出神经元完全连接。每个连接都有一个权重和一个偏置。…

GWASinspector简单教程

在进行GWAS meta分析前,对GWAS summary data数据进行QC非常重要,最近文章提出了一个pipeline可以进行相关的操作:GWASinspector(文章连接:GWASinspector: comprehensive quality control of genome-wide association s…

elasticsearch快照存储到linux本地路径或分布式存储系统mioio

一、使用linux本地目录做快照存储 1.编辑 elasticsearch.yml 文件,添加以下配置: path.repo: ["/path/to/your/backup/dir"]2.创建一个文件系统类型的快照仓库 PUT /_snapshot/my_local_repository {"type": "fs",&quo…

【手写数据库内核组件】0102 链表的类型,单向链表,双向链表,循环链表,二叉树,多路树等类型以及它们的特点,物尽其用

0102 链表的类型 ​专栏内容: postgresql使用入门基础手写数据库toadb并发编程个人主页:我的主页 管理社区:开源数据库 座右铭:天行健,君子以自强不息;地势坤,君子以厚德载物. 文章目录 0102 链表的类型一、概述 二、链表的类型与特点 2.1 单链表 2.2 双向链表 2.3 循环…

磷酸二氢钾溶液净化除杂,除重金属

磷酸二氢锂,化学式LiH2PO4,相对分子质量103.93,白色结晶或粉末。熔点大于100℃,相对密度2.5g/ml。每100毫升水中的溶解克数:126g/0℃。 锂离子二次电池在手提电脑、移动通讯、电动工具等方面具有广泛应用,在…

CSS @layer:深入理解与实战应用

CSS layer:深入理解与实战应用 在CSS的不断发展中,layer 规则的引入为样式表的组织和性能优化提供了全新的解决方案。本文将详细介绍CSS layer 的使用方法,以及它能解决的实际问题,帮助开发者更好地理解和应用这一特性。 一、lay…

使用VScode的Git版本控制功能(图文版)

☁️ 前言 今天让我来手把手教你简单入门VScode自带的Git版本控制。 🎉 初始化仓库 初始化仓库之后,仓库里的文件发生了任何改动都会有相应的提示,这对于我们开发和维护项目非常有帮助。 🎉提交更改 初始化仓库之后&#xff…

基于web的停车场管理系统设计与实现-计算机毕设 附源码 16856

基于web的停车场管理系统设计与实现 目 录 1 绪论 1.1 研究背景和意义 1.2国内外研究现状 1.3论文结构与章节安排 2 系统分析 2.1 可行性分析 2.1.1 技术可行性分析 2.1.2 经济可行性分析 2.1.3 操作可行性分析 2.2 系统功能分析 2.2.1 功能性分析 2.2.2 非功能性分…

【自动化】考试答题自动化完成答案,如何实现100%正确呢

一、科目仿真考试不能自动答题 我的答案是可以的,电脑程序可以模拟人的操作完成所有的答题并提交结束考试 二、分析页面内容 完成一个题目,包括判断题,对与错2选1答案,单选题ABCD4选1答案,多选题大家想一想 F12查看按…

电商行业虚拟公户供应商分账

在快速发展的电商时代,资金流动的高效与安全成为了企业运营中不可忽视的重要环节。电商虚拟公户供应商分账系统的出现,正是为解决这一难题而设计的创新解决方案。本文将深入探讨电商虚拟公户供应商分账的概念、优势及其在电商行业中的应用。 电商虚拟公…

网页html版——在线查字典的一个web服务器

HTML(HyperText Markup Language) HTML是一种用于创建网页的标准标记语言。可以用dreamwave这个工具来写 使用文本编辑器(如Notepad、Sublime Text、Visual Studio Code等)创建一个新的文件,并将其保存为 .html 文件…

基于layui实现简单的万智牌生命计数器页面

对照手机App“旅法师营地”的万智牌生命计数器窗口(如下图所示),使用layui、jQuery等实现简单的万智牌生命计数器页面。   主要实现的功能如下:   1)点击左右两侧的-1、1、-5、5区域更新左右两侧生命值&#xff1…

【MATLAB学习笔记】绘图——自定义标记(Marker)形状,实现与MATLAB自带标记基本一致的功能(自适应缩放、自适应裁剪)

目录 前言自定义标记函数自定义标记函数的说明纵横比调整将图形大小按磅数设置平移标记点绘制标记点边界标记点不裁剪 拓展功能——标记点自适应绘图区的缩放绘图区缩放回调函数标记点大小自适应标记点裁剪自适应 示例基本绘图自定义标记函数的使用 总代码主函数自定义标记函数…

语言的基本运算

编程语言基本数据类型的加减乘除,看起来都很像。它们都和数学公示很像,除了乘法不能用X或x,这个是字母,除法不能用,因为这个字符在键盘上看不到。 除法的余数? C/C整数除法默认会丢弃余数,Java/C#一样。P…

入门STM32--按键输入

上一篇博客我们介绍了如何使用GPIO配置跑马灯,根据GPIO的基本结构图,我们能够发现,他肯定不单单有输出的功能,肯定可以检测IO上的电平变化,实际上就是输入的功能。 1.按键 在大多数情况下,按键是一种简单的…

【第54课】XSS跨站Cookie盗取表单劫持网络钓鱼溯源分析项目平台框架

免责声明 本文发布的工具和脚本,仅用作测试和学习研究,禁止用于商业用途,不能保证其合法性,准确性,完整性和有效性,请根据情况自行判断。 如果任何单位或个人认为该项目的脚本可能涉嫌侵犯其权利&#xff0…

1259:【例9.3】求最长不下降序列 动态规划

1259:【例9.3】求最长不下降序列 题目链接 【输入样例】 【输入样例】 14 13 7 9 16 38 24 37 18 44 19 21 22 63 15【输出样例】 max8 7 9 16 18 19 21 22 63思路: 确定状态: a[n]数组放数据, dp[n]数组放第i个位子前最长子序…

kafka发送消息-生产者发送消息的分区策略(消息发送到哪个分区中?是什么策略)

生产者发送消息的分区策略(消息发送到哪个分区中?是什么策略) 1、默认策略,程序自动计算并指定分区1.1、指定key,不指定分区1.2、不指定key,不指定分区 2、轮询分配策略RoundRobinPartitioner2.1、创建配置…