Python requests模块

Python中的requests是第三方模块用于实现HTTP请求,该模块在实现 HTTP请求时要比Python语言内置的 urllib 模块简化很多,操作更加人性化。在 Windows系统下使用requests 模块时需要通过在命令行窗口中执行 pip install requests 代码进行安装。

python 复制代码
import requests    # 导入模块

一、Requests功能特性

Keep-Alive&连接池

国际化域名和 URL

带持久 Cookie 的会话

浏览器式的 SSL认证

自动内容解码

基本/摘要式的身份认证

优雅的 key/value Cookie

自动解压

Unicode 响应体

HTTP(S)代理支持

文件分块上传

流下载

连接超时

分块请求

支持.netrc

二、GET请求

以GET请求为例,打印多种请求信息的示例代码:

python 复制代码
import requests

response=requests.get('http://www.baidu.com')
print(response.status_code)#打印状态码
print(response.url) #打印请求URL
print(response.headers) #打印头部信息
print(response.cookies) # 打印Cookie信息
print(response.text)   # 以文本形式打印网页源码
print(response.content) #以字节流形式打印网页源码  如果想要提取文本就用 text ,如果想要提取图片、文件,就用 content

三、POST请求

以POST请求方式,发送HTTP网络请求的示例代码:

python 复制代码
data= {'word':'hello'}  # 表单参数
respons=requests.post('http://httpbin.org/post',data=data)
print(respons.content) # 以字节流形式打印网业源码

四、其他请求方式

requests模块不仅提供了以上两种常用的请求方式,还提供以下多种网络请求的方式。代码如下:

python 复制代码
requests.put('http://httpbin.org/put',data = {'key':'value'})  # PUT请求
requests.delete('http://httpbin.org/delete')  # DELETE请求
requests.head('http://httpbin.org/get')  # HEAD请求
requests.options('http://httpbin.org/get')  # OPTIONS请求

五、URL中传递参数

如果发现请求的 URL地址中参数是跟在"?"(问号)的后面,例如"httpbin.org/get?key=val"这是 requests 模块提供的传递参数的方法,它允许你使用 params 关键字参数,以一个字符串字典来提供这些参数。

例如,传递"keyl=value1"和"key2=value2 "到"htpbin.org/get ",可以使用如下代码:

GET请求

python 复制代码
import requests
payload={'key1':'value1',
          key2': 'value2'}    #对需要爬取的网页发送请求,字典的数据类型,内容为键值对的形式
# 传递的参数
response=requests.get("http://httpbin.org/get",params=payload)
print(response.content) #以字节流形式打印网页源码

POST请求

python 复制代码
import requests
 
proxies = {
    'http': "http://127.0.0.1:8080",
    'https': "http://127.0.0.1:8080"
}
 
payload = {
    'myon': "hello!",
    'test': 123456
}
 
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 Edg/120.0.0.0',
    'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6',
    'test': 'hello Myon!'
}
 
re = requests.post("http://www.baidu.com", proxies=proxies, data=payload, headers=headers)
print(re.url)
print(re.status_code)
print(re.text)
相关推荐
杜子不疼.2 分钟前
【C++】红黑树为什么比AVL快?用C++亲手实现告诉你答案
开发语言·c++
程序猿追4 分钟前
Ascend C编程范式总结:与CUDA的异同对比
c语言·开发语言·算法
沐知全栈开发1 小时前
HTML DOM 修改
开发语言
2501_941236212 小时前
C++与Node.js集成
开发语言·c++·算法
2501_941111342 小时前
Python上下文管理器(with语句)的原理与实践
jvm·数据库·python
晨非辰2 小时前
【数据结构初阶系列】归并排序全透视:从算法原理全分析到源码实战应用
运维·c语言·数据结构·c++·人工智能·python·深度学习
A尘埃2 小时前
Python后端框架:FastAPI+Django+Flask
python·django·flask·fastapi
菠菠萝宝3 小时前
【Java手搓RAGFlow】-3- 用户认证与权限管理
java·开发语言·人工智能·llm·openai·qwen·rag
蒋星熠4 小时前
实证分析:数据驱动决策的技术实践指南
大数据·python·数据挖掘·数据分析·需求分析
独行soc5 小时前
2025年渗透测试面试题总结-250(题目+回答)
网络·驱动开发·python·安全·web安全·渗透测试·安全狮