首页 > 其他分享 >requests模块

requests模块

时间:2024-10-31 17:00:57浏览次数:4  
标签:http 请求 url 代理 headers 模块 requests

1.requests模块

1.1 模块说明

requests是使用Apache2 licensed许可证的http库
使用python编写的
比urllib2模块简洁
request支持http连接保持和连接池,支持使用cookie会话,支持文件上传,支持自动响应内容编码,支持国际化的URL和POST数据自动编码
在python内置模块的基础上进行了高度的封装,从而使python进行网络请求时,变得人性化,使用requests可以轻而易举的完成浏览器可有的任何操作。
requests会自动实现持久化连接keep-alive

1.2 导入模块

import requests

1.3 发送请求的简介

requests的各个请求方式

GET请求
POST请求
PUT请求
DELETE请求
HEAD请求
OPTIONS请求

获取一个网页(github)

import requests

r = requests.get('https://www.baidu.com/')   #最基本的get请求
print(r.text)

1.4 传递参数

1.5 响应内容

响应内容的方式

r.encoding		#获取当前的编码
r.encoding = 'utf-8		#设置编码
r.text		#以encoding解析返回内容。字符串方式的响应体,会自动根据响应头部的字符编码进行编码
r.content	#以字节形式(二进制)返回。字节方式的响应体,会自动为你编码gzip和deflate压缩

r.headers	#返回响应头信息(字典格式)
r.url	#获取请求的url

r.status_code	#响应状态码
r.raw		#返回原始响应体,也就是说urllib的response对象,使用r.raw.read()
r.ok		#查看.ok的布尔值便可以知道是否登录成功

#特殊处理方法

1.requests.get请求

格式

params:将参数封装到字典中

headers = {
	key:value
}

params = {
	key:value
}



requests.get(url,params,headers)

1.requests.POST请求

格式

data:将参数封装到字典中

headers = {
	key:value
}

data = {
    key:value
}



requests.post(url,data=data,headers=headers)

1.代理

1.代理:第三方代理本体执行相关的事物。生活:代购、微商、中介

2.为什么要使用代理:
- 反爬操作
- 反反爬手段

3.分类:

  • 正向代理:代替客户端获取数据
  • 反向代理:代理服务器端提供数据

4.免费代理ip的网站提供商

  • 快代理

2.正向代理实现方式

  • HTTP全局代理:环境变量方式
  • HTTP全局代理:代码实现方式
  • SOCKS全局代理
  • 针对部分请求设置代理

1.HTTP全局代理:环境变量方式
在命令行里配置如下环境变量,然后执行Python脚本,Python在进行网络请求时就会使用配置的代理。

export http_proxy="http://127.0.0.1:1231"
export https_proxy="http://127.0.0.1:1231"

2.HTTP全局代理:代码实现方式
也可以在Python代码里添加如下内容,效果与上面的方式相同:

import os
os.environ["http_proxy"] = "http://127.0.0.1:1231"
os.environ["https_proxy"] = "http://127.0.0.1:1231"

3.SOCKS全局代理
通过设置环境变量的方式通常只能使用HTTP代理。要使用全局SOCKS代理可以使用tsocks.

安装tsocks后,编辑/etc/tsocks.conf,以使用端口为8080的本地SOCKS5代理为例:

server = 127.0.0.1
server_port = 8080 
server_type = 5

4.针对部分请求设置代理代码

import requests

url = "http://www.baidu.com/s?ie=utf-8&f=8&tn=baidu&wd=ip%E5%9C%B0%E5%9D%80%E6%9F%A5%E8%AF%A2&oq=ip%25E5%259C%25B0%25E5%259D%2580%25E6%259F%25A5%25E8%25AF%25A2"
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36',
    "Accept": "*/*",
	"Accept-Language": "zh-CN,zh;q=0.9",
	"Connection": "keep-alive",
    "sec-ch-ua-platform": "Windows",
    "Cookie":"BIDUPSID=A2DE97B7896600A93C9899F7C365630E; PSTM=1657353195; BAIDUID=DEA5648175D32D2D9EB7C4DA8CBD0B49:FG=1; BD_UPN=12314753; MCITY=-131%3A; BDORZ=B490B5EBF6F3CD402E515D22BCDA1598; BAIDUID_BFESS=DEA5648175D32D2D9EB7C4DA8CBD0B49:FG=1; BA_HECTOR=050k8g25ag05ah05000g833t1hq14pd1j; ZFY=GjZ48S0Jj:AXbKNJONddmK1Jx681ORdeGbKdMWM1qvvY:C; B64_BOT=1; BD_HOME=1; H_PS_PSSID=37857_36553_37907_37866_37938_37904_26350_37958_37790_37881; BD_CK_SAM=1; delPer=0; PSINO=5; COOKIE_SESSION=405_0_8_9_0_13_1_0_8_6_2_4_0_0_0_0_0_0_1671517773%7C9%2310640476_8_1670219470%7C3; H_PS_645EC=5b0aDyabshGeFt7hvd3D4s3ZWRlvN923tSHybRLZ0RcnQn274rCGjymXgmQ; baikeVisitId=b3e0d23b-5ded-4984-8f3d-a47001ab7654; BDSVRTM=187; WWW_ST=1671517931841",
}

#正向代理配置
proxies = {
	#协议:地址:端口
    "http":"101.43.162.190:880"
}

#添加正向代理参数“proxies”
response = requests.get(url=url,proxies=proxies,headers=headers)
# print(response.text)
with open('./daili.html', 'wb') as f:
    f.write(response.content)

5.代码打印请求ip地址


response = requests.get(...,stream=True)

ip_and_port = response.raw._connection.sock.getpeername()
print(ip_and_port)

标签:http,请求,url,代理,headers,模块,requests
From: https://www.cnblogs.com/megshuai/p/18518328

相关文章

  • 软件工程中的模块化设计原则
    该题目考察的知识点是软件工程中的模块化设计原则,特别是关于模块结构优化的方法和原则。知识点相关内容:在软件工程中,模块化设计是一种将软件系统划分为可管理的模块或组件的方法。每个模块具有特定的功能,并且与其他模块协同工作以实现整个系统的功能。模块化设计的主要目标是提......
  • 模块与包
    模块和包什么是模块?在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护。为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相对较少,很多编程语言都采用这种组织代码的方式。在Python中,一个.py......
  • mcu程序中的存储模块
    硬件知识基于成本与需求的考虑,铁电已经很少使用,最常用的是eeprom与flasheeprom相对于flash的优势是寿命长(100万次1万次),且可以按字节操作所以一般嵌入式系统中eeprom存储运行时参数(掉电需保存的参数或者频繁需要修改的数据),flash存储写次数较少但数据量较大的数据(日志......
  • 服务器漏洞修复和php一键安装包环境 nginx 安装拓展模块
    服务器漏洞修复header头缺失问题https://blog.51cto.com/u_16213703/10249280add_headerX-XSS-Protection'1;mode=block';add_headerX-Frame-OptionsSAMEORIGIN;add_headerX-Content-Type-Optionsnosniff;add_headerX-Download-Options:noopen;......
  • 在 Odoo 中,确实可以通过 SQL 语句来提升一些功能逻辑的处理效率。将 SQL 转为 Python
    1.使用env.cr.execute执行SQL语句OdooORM提供的env.cr.execute()可以直接执行SQL语句,这样可以在Python代码中调用SQL逻辑,结合Odoo的业务模型实现复杂的逻辑操作。execute()方法适合处理批量数据更新、复杂查询等。示例:批量更新customer_id字段defupdate_......
  • Python 进度条模块tqdm
    1.简介在处理大规模数据或长时间运行的任务时,了解任务的进度对于用户体验和调试来说非常重要。tqdm是一个用于显示进度条的Python库,它能将任务的进度信息直观地展示出来。无论是遍历一个大型列表、处理批量数据,还是下载文件,tqdm都能轻松实现进度条显示,并且与Python的标准......
  • (ICCV2023)多尺度空间特征提取模块,有效涨点,即插即用
    题目:SAFMN:Spatially-AdaptiveFeatureModulationforEfficientImageSuper-Resolution期刊:CVPR(ConferenceonComputerVisionandPatternRecognition)GitHub地址:https://github.com/sunny2109/SAFMN年份:2023作者单位:TheChineseUniversityofHongKong(CUHK)......
  • Python 标准库——argparse模块
    文章目录前言一、主要作用二、基本步骤1.导入模块2.创建解析器对象3.添加参数4.解析参数5.使用解析后的参数6.编写主函数并调用三、函数示例前言argparse是Python标准库中的一个模块,用于编写用户友好的命令行接口。它允许你轻松地定义程序应该接受的命令行参数,并......
  • D53【python 接口自动化学习】- python基础之模块与标准库
    day53自定义模块学习日期:20241030学习目标:模块与标准库--67自定义模块:如何编写一个完整功能?学习笔记:创建自定义模块自定义模块注意事项 自定义模块deffunc1():return'thisisafunction'classClass1(object):def__init__(self):print(......
  • Python包和模块
    Python包和模块当使用Python编程时,包(Packages)和模块(Modules)是两个关键的概念,它们有助于组织、管理和复用代码。1.模块(Modules)1.1什么是模块一个.py文件就是一个模块模块是含有一系列数据,函数,类等的程序作用把相关功能的函数等放在一起有利于管理,有利于多人合作开......