当前位置: 首页 > news >正文

爬虫003----requests库

Requests,连urllib官网上都说“对于更高坤别的HTTP客户端接口,建议使用Requests”,可见在网络请求中,Requests库的重要性,看官网logo都觉得我滴孩来,很架势
在这里插入图片描述

1. 介绍

Requests is an elegant and simple HTTP library for Python, built for human beings.
官网上很简短的一句话说明了一切,但,卧槽??专为人类构建???其他库是非人类是吧
在这里插入图片描述
官方商业吹捧来了,urllib官网夸了Requests可以解决更高级的问题,Requests官网又夸了urllib,他这么厉害得益于urllib。。。

2. 官方文档及Requests库导入

英文版文档链接: https://requests.readthedocs.io/en/latest/

# 使用前先pip一下
pip install requests# 然后导入
import requests

3. requests接口

感觉requests库比较简单粗暴💢一点,怪不得说人性化👨,比如一个requests.request(method, url, **kwargs)接口里的**kwargs,就包含了一堆参数,再比如urllib发送post请求需要解析data参数,带中文的参数还需要编码,requests库里通通不需要🙅‍♂️🙅‍♀️。。。直接冲

3.1 一个类型,六个属性

一个类型: resquests返回Response类型数据
六个属性:

  1. requests.text: 以字符串形式,返回网页源码
  2. requests.encoding: 访问或定制编码格式
  3. requests.url: 获取请求的url
  4. requests.content: 返回二进制数据
  5. request.status_code: 返回响应状态码
  6. requests.headers: 返回响应头信息

3.2 requests.request(method, url, **kwargs)

3.2.1 参数(常用)

  1. method: Request对象的方法:GET、OPTIONS、HEAD、POST、PUT、PATCH或DELETE。
  2. url: url
  3. params: (可选)字典,请求查询字符串中要发送的元组或字节列表。---- get请求参数
  4. data: (可选)字典,请求正文中要发送的元组、字节或类似文件的对象列表。---- post请求参数
  5. json: (可选)一个json可序列化的Python对象,用于在Request的正文中发送。
  6. headers:(可选)随请求一起发送的请求头字典。
  7. cookies: (可选)与请求一起发送的Dict或CookieJar对象---- 也可放到headers字典里,都实验过,都可以登录成功
  8. timeout (float、turple):(可选)超时访问最大时间
  9. allow_redirects (bool):(可选) 启用/禁用GET/OPTIONS/POST/PUT/PATCH/DELETE/HEAD重定向。默认为True。
  10. proxies: (可选)代理

举一个例子🌰搞定

import requestsurl = "https://www.baidu.com"headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36',#"Cookie":'"PSTM=1736416810; BIDUPSID=C6C1A7E58F43115193F1BA4A3642DA92; MAWEBCUID=web_MxzGXuqwyzQbYbhKtbsQHZNMWiZIIpWJsPzAbRCOdRyXQrXqAv; BDUSS=dTOXBmZEViMHBvaTNoVXFUUi1iWGNxZ1ZnVzVpTkUyZ35ydDlheTFqSnNVczVuSVFBQUFBJCQAAAAAAAAAAAEAAAA6WVM1ztLKx3N4MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGzFpmdsxaZnVz; BDUSS_BFESS=dTOXBmZEViMHBvaTNoVXFUUi1iWGNxZ1ZnVzVpTkUyZ35ydDlheTFqSnNVczVuSVFBQUFBJCQAAAAAAAAAAAEAAAA6WVM1ztLKx3N4MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGzFpmdsxaZnVz; BAIDUID=5A948F439CBBBEF7456C8B490134DC93:SL=0:NR=10:FG=1; H_WISE_SIDS_BFESS=62036_62090_62111; BDORZ=B490B5EBF6F3CD402E515D22BCDA1598; H_WISE_SIDS=62325_63243_63440_63563_63582_63578_63609_63587; BAIDUID_BFESS=5A948F439CBBBEF7456C8B490134DC93:SL=0:NR=10:FG=1; BDRCVFR[feWj1Vr5u3D]=mk3SLVN4HKm; delPer=0; PSINO=3; BA_HECTOR=85a4a0818l2421a58g2484208g858j1k59fc925; ZFY=m02LnhkxpNo28v8cAasQ0rASiBga2jtKh4rM:AV14l2w:C; H_PS_PSSID=61675_62325_63327_63440_63567_63563_63582_63578_63609_63587_63636_63647_63692; RT="z=1&dm=baidu.com&si=bcc17f10-2601-49c8-b9f8-148896d0718c&ss=mc4a0l78&sl=6&tt=fds&bcn=https%3A%2F%2Ffclog.baidu.com%2Flog%2Fweirwood%3Ftype%3Dperf"; ab_sr=1.0.1_Y2FkMzg2NTVjM2FhZGUwZTVhMDU5N2YxMjExYjUzNGJjZjRkOThjODEyMmE1OGFjMmM3NjkwN2Q1Y2E4M2QwMWQzOWE5ZmRmODFkNzQ4Njk3ZDFiYzM5YjZjM2M2ZmYzOWIwOGEwZDYwYTJhNzRhY2E0OTI1MWE4OTJiZTZkZjc3OTAwMmQzOTMxM2RiZWQyYTlmM2M2OThkNWRlODkyYQ=="'
}
cookies = {"Cookie":'"PSTM=1736416810; BIDUPSID=C6C1A7E58F43115193F1BA4A3642DA92; MAWEBCUID=web_MxzGXuqwyzQbYbhKtbsQHZNMWiZIIpWJsPzAbRCOdRyXQrXqAv; BDUSS=dTOXBmZEViMHBvaTNoVXFUUi1iWGNxZ1ZnVzVpTkUyZ35ydDlheTFqSnNVczVuSVFBQUFBJCQAAAAAAAAAAAEAAAA6WVM1ztLKx3N4MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGzFpmdsxaZnVz; BDUSS_BFESS=dTOXBmZEViMHBvaTNoVXFUUi1iWGNxZ1ZnVzVpTkUyZ35ydDlheTFqSnNVczVuSVFBQUFBJCQAAAAAAAAAAAEAAAA6WVM1ztLKx3N4MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGzFpmdsxaZnVz; BAIDUID=5A948F439CBBBEF7456C8B490134DC93:SL=0:NR=10:FG=1; H_WISE_SIDS_BFESS=62036_62090_62111; BDORZ=B490B5EBF6F3CD402E515D22BCDA1598; H_WISE_SIDS=62325_63243_63440_63563_63582_63578_63609_63587; BAIDUID_BFESS=5A948F439CBBBEF7456C8B490134DC93:SL=0:NR=10:FG=1; BDRCVFR[feWj1Vr5u3D]=mk3SLVN4HKm; delPer=0; PSINO=3; BA_HECTOR=85a4a0818l2421a58g2484208g858j1k59fc925; ZFY=m02LnhkxpNo28v8cAasQ0rASiBga2jtKh4rM:AV14l2w:C; H_PS_PSSID=61675_62325_63327_63440_63567_63563_63582_63578_63609_63587_63636_63647_63692; RT="z=1&dm=baidu.com&si=bcc17f10-2601-49c8-b9f8-148896d0718c&ss=mc4a0l78&sl=6&tt=fds&bcn=https%3A%2F%2Ffclog.baidu.com%2Flog%2Fweirwood%3Ftype%3Dperf"; ab_sr=1.0.1_Y2FkMzg2NTVjM2FhZGUwZTVhMDU5N2YxMjExYjUzNGJjZjRkOThjODEyMmE1OGFjMmM3NjkwN2Q1Y2E4M2QwMWQzOWE5ZmRmODFkNzQ4Njk3ZDFiYzM5YjZjM2M2ZmYzOWIwOGEwZDYwYTJhNzRhY2E0OTI1MWE4OTJiZTZkZjc3OTAwMmQzOTMxM2RiZWQyYTlmM2M2OThkNWRlODkyYQ=="'
}response = requests.request(method='GET', url=url, cookies=cookies, headers=headers)
response.encoding = 'utf-8'
print(response.text)

3.3 request.get(url, params=None, **kwargs)

发送get请求调用
**kwargs: 可以接收任意可接受的参数

类似于resquests.request(“GET”, url),kwargs可传递任何可识别参数,如前面urllib中 提到过的代理,只要添加一个proxies=proxies参数即可,参数接接受字典类型

举一个例子🌰搞定

import requestsurl = "https://www.baidu.com"headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36'
}
proxy = {'http': '121.230.210.31:3256'
}
response = requests.get(url=url, headers=headers, proxies=proxy)
response.encoding = 'utf-8'print(response.content)

3.4 request.post(url, data=None, json=None, **kwargs)

发送post请求
类似于resquests.request(“POST”, url, data, json)
举一个例子🌰搞定

import jsonimport requestsurl = "https://fanyi.baidu.com/sug"headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36','Cookie': 'PSTM=1736416810; BIDUPSID=C6C1A7E58F43115193F1BA4A3642DA92; MAWEBCUID=web_MxzGXuqwyzQbYbhKtbsQHZNMWiZIIpWJsPzAbRCOdRyXQrXqAv; BDUSS=dTOXBmZEViMHBvaTNoVXFUUi1iWGNxZ1ZnVzVpTkUyZ35ydDlheTFqSnNVczVuSVFBQUFBJCQAAAAAAAAAAAEAAAA6WVM1ztLKx3N4MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGzFpmdsxaZnVz; BDUSS_BFESS=dTOXBmZEViMHBvaTNoVXFUUi1iWGNxZ1ZnVzVpTkUyZ35ydDlheTFqSnNVczVuSVFBQUFBJCQAAAAAAAAAAAEAAAA6WVM1ztLKx3N4MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGzFpmdsxaZnVz; BAIDUID=5A948F439CBBBEF7456C8B490134DC93:SL=0:NR=10:FG=1; H_WISE_SIDS_BFESS=62036_62090_62111; H_WISE_SIDS=61675_62325_63327_63440_63567_63563_63582_63578_63609_63636_63647_63692_63724_63729; BAIDUID_BFESS=5A948F439CBBBEF7456C8B490134DC93:SL=0:NR=10:FG=1; BA_HECTOR=252l0k2l2k8ka58l8h018ka5a1a00i1k5at9c24; ZFY=m02LnhkxpNo28v8cAasQ0rASiBga2jtKh4rM:AV14l2w:C; PSINO=3; delPer=0; BCLID=12162343736040037043; BCLID_BFESS=12162343736040037043; BDSFRCVID=5dAOJeC62ZyhnBvsoxWsEHtYogKKnW7TH6aoqFkaMFcr1-HjQo5GEG0nJU8g0Ku-S2OOogKKWmOTH7kLdm025Mh5OvbasvNsB9rXtf8g0x5; BDSFRCVID_BFESS=5dAOJeC62ZyhnBvsoxWsEHtYogKKnW7TH6aoqFkaMFcr1-HjQo5GEG0nJU8g0Ku-S2OOogKKWmOTH7kLdm025Mh5OvbasvNsB9rXtf8g0x5; H_BDCLCKID_SF=tRAOoC_-tDvtHJrwMDTD-tFO5eT22-usJCnC2hcH0KLKo4Tdhx5-KP4b3pb4Bn3kaKviabr6JMb1MRjvKfjO-fuz-pKDexvBLC8tKh5TtnrkSDnTDMRhqqJXXPnyKMniQKj9-pP52hRfDDt4jfcsjf4B-xQe-f6e0J5HhPbDfn02JKKu-n5jHjJLjGtH3D; H_BDCLCKID_SF_BFESS=tRAOoC_-tDvtHJrwMDTD-tFO5eT22-usJCnC2hcH0KLKo4Tdhx5-KP4b3pb4Bn3kaKviabr6JMb1MRjvKfjO-fuz-pKDexvBLC8tKh5TtnrkSDnTDMRhqqJXXPnyKMniQKj9-pP52hRfDDt4jfcsjf4B-xQe-f6e0J5HhPbDfn02JKKu-n5jHjJLjGtH3D; BAIDUEUID=462042455; BDORZ=B490B5EBF6F3CD402E515D22BCDA1598; BDRCVFR[feWj1Vr5u3D]=I67x6TjHwwYf0; H_PS_PSSID=61675_62325_63327_63485_63567_63563_63582_63578_63609_63587_63636_63647_63692_63724_63729; ab_sr=1.0.1_MTI3OWY4NDI1YzlkMzUzZDI5YzgyZDU2OGU4ZWFiYjE2Y2Q4OWE3NTY5MDEzZjY4MDIyODJkMTRkMDY1MmVhZDZmYTU5ODcyODEzNjAwNDk0OGI1YjRmMWYwYWY4NDhmY2RlMDU2OTBkNzZlZDk3Yzc1MmRlYWNlMDFkMGQ5YWQwN2I5ZDgwNDc0YzJjMTNjNTUwNmIxZTUzNGE3OWFlYzkyMTNlYzEzMWVlMTJmMjI3NzJhMThmOTdlNjZlNTExMDA4MjU5M2UxMWU3ZDVmYWY2Y2JlMGFiZDg3YmJlYWM=; RT="z=1&dm=baidu.com&si=ef1bcfc0-4fac-4f5c-9c90-e6732360cbd5&ss=mc66vrn9&sl=1&tt=29q&bcn=https%3A%2F%2Ffclog.baidu.com%2Flog%2Fweirwood%3Ftype%3Dperf&ld=31z"'
}data = {"kw": "eye"
}response = requests.post(url=url, data=data, headers=headers)content = response.textobj = json.loads(content)
print(obj)

这几个例子🌰印证了开头的说法,requests发送无论是get还是post请求,都不需要格式化参数✅

3.5 requests.session()

传递一个携带session的请求,提供cookie持久性、连接池和配置。

☝️一个拓展知识点:
Session 的主要作用:

  1. 持久化 Cookies:
    当你使用 Session 对象时,所有请求的响应 Cookies 会被自动保存到该会话中。这意味着在随后的请求中,可以自动发送这些 Cookies,而无需手动处理。例如,用于认证的 Cookies 可以在多个请求中保持会话。
  2. 保持连接:
    使用 Session 可以为多个请求复用底层的 TCP 连接,这样可以减少连接的开销,提高请求的效率。
  3. 共享请求参数:
    可以在 Session 对象中设置请求头、认证信息等,这样在通过该会话发送的所有请求都将自动使用这些设置。例如,如果你需要为所有请求设置一个通用的身份验证 token,可以在 Session 中配置。
  4. 自动管理重定向和错误处理:
    使用 Session 时,库会自动处理 HTTP 的 3xx 重定向和一些错误条件,如身份认证失败等,更加便捷。
import requestssession = requests.session()
response = session.get("https://www.baidu.com")
print(response.content)

常用requests库知识就over🔚了,requests还有其他类方法的使用比如Resopnse方法等,如果以后使用到发现也是比较常用,再补充,否则就直接对着文档📓查就可以,一天肝了两个知识点的总结,累😮‍💨

http://www.lqws.cn/news/491833.html

相关文章:

  • ABP VNext + Apache Kafka Streams:构建高吞吐、生产级实时流处理服务
  • 自回归(AR)与掩码(MLM)的核心区别:续写还是补全?
  • 采集MFC软件的数据方法记录
  • 【Java面试】你是怎么控制缓存的更新?
  • Linux系统能ping通ip但无法ping通域名的解决方法
  • 【源码+文档+调试讲解】基于web的运动健康小程序的设计与实现y196
  • 【科研绘图系列】R语言绘制论文组合图(multiple plots)
  • 【Leetcode】有效的括号、用栈实现队列、用队列实现栈
  • 数据赋能(313)——合作共享——跨界融合
  • STM32 ADC(DMA)双缓冲采集+串口USART(DMA)直接传输12位原始数据到上位机显示并保存WAV格式音频文件 收藏住绝对实用!!!
  • 马斯克YC技术核弹全拆解:Neuralink信号编译器架构·星舰着陆AI代码·AGI防御协议(附可复现算法核心/开源替代方案/中国技术对标路径)
  • CSS 中aspect - ratio属性的用途及应用
  • Mermaid学习第二部
  • Netty内存池核心:PoolChunkList解析
  • 【附源码】考试报名系统设计与实现+SpringBoot + Vue (前后端分离)
  • 【Linux网络编程】五种IO模型与非阻塞IO
  • 树莓派5+Ubuntu24.04 LTS ROS2 Jazzy安装 保姆级教程
  • transformer-kv缓存
  • Docker健康检查
  • 【AI News | 20250623】每日AI进展
  • 开发Qt程序时,为什么是CMake?
  • 前端截图并导出pdf
  • 基于Django和MySQL的智能图像分类与情感分析系统
  • Nginx-前端跨域解决方案!
  • AI+地图打车:如何用机器学习实现小程序订单智能匹配与路径优化?
  • 征服分布式系统:阿里云 Linux 多机互联与资源共享实战指南
  • 区块链大讲堂 | 分布式隐私计算友好的零知识证明协议
  • 基于PostgreSQL的百度或高德等POI多层级分类的数据库设计
  • [Java恶补day31] 21. 合并两个有序链表
  • 【ARM 嵌入式 编译系列 7.5 -- GCC 打印链接脚本各段使用信息】