当前位置: 首页 > 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.lryc.cn/news/574271.html

相关文章:

  • UP COIN:从 Meme 共识走向公链与 RWA 的多元生态引擎
  • VLN论文复现——VLFM(ICRA最佳论文)
  • 如何快速判断Excel文档是否被修改过?Excel多版本比对解决方案
  • 睿是信息携手Arctera,深化服务中国市场,共筑数据管理新未来
  • css元素超过两行隐藏并显示省略号全网独一份
  • 2025年CSS最新高频面试题及核心解析
  • ADIOS2 介绍与使用指南
  • 后台发热、掉电严重?iOS 应用性能问题实战分析全过程
  • 【数据结构初阶】--顺序表(一)
  • 【go的测试】单测之gomock包与gomonkey包
  • 板凳-------Mysql cookbook学习 (十--9)
  • K8S: etcdserver: too many requests
  • Halcon ——— OCR字符提取与多类型识别技术详解
  • Java 程序设计试题​
  • 多智能体协同的力量:赋能AI安全报告系统的智能设计之道
  • Elasticsearch(ES)与 OpenSearch(OS)
  • 苹果芯片macOS安装版Homebrew(亲测)
  • LoHoVLA技术:让机器人像人类一样思考与行动的统一框架
  • AI 智能体架构设计3阶段演进和3大关键技术对比剖析
  • 硬件工程师笔试面试高频考点汇总——(2025版)
  • 最近小峰一直在忙国际化项目,确实有点分身乏术... [特殊字符] 不过! 我正紧锣密鼓准备一系列干货文章/深度解析
  • SpringBoot中使用表单数据有效性检验
  • Ollama 在LangChain中的应用 Python环境
  • RS485
  • Linux运维新人自用笔记(inode索引节点、删除文件原理、raid10、lvm逻辑卷)
  • Python基础(​​FAISS​和​​Chroma​)
  • 十四天机器学习入门——决策树与随机森林:从零构建智慧决策模型
  • 本地文件深度交互新玩法:Obsidian Copilot的深度开发
  • 从Java API调用者到架构思考:我的Elasticsearch认知升级之路
  • RealSense 相机 | 读取IMU | 解决权限问题 | 提供示例程序