【Python爬虫】爬虫利器 requests 库小结
requests库
Requests 是一个 Python 的 HTTP 客户端库。 支持许多 HTTP 特性,可以非常方便地进行网页请求、网页分析和处理网页资源,拥有许多强大的功能。
本文主要介绍 requests 库的基础使用。
1. 安装与导入
安装requests库:快捷键 Windows+r 打开运行控制框,输入 cmd,进入命令行,输入:
pip install requests
导入:
import requests
2. 主要方法
2.1 常见的网页请求方法
常见的网页请求方法有两种:get 和 post。
get 方法,一般是直接通过发送请求,来获取网页信息。在浏览器中直接输入 URL 并回车,我们便发送了一个get请求,请求的参数会直接包含在 URL 里。比如,直接通过 get 方法获取网页上的豆瓣电影排行榜等。。
post 请求大多在表单提交时发起。比如登录网站时,填写了账号和密码后点击登录,这通常便发起了一个 post 请求,其数据以表单的形式传输,而不会体现在 URL 中。
get 请求和 post 请求的区别:
- get 请求中的参数包含在 url 里面,传递的数据可以再 url 中看到。而 post 请求的 url 不会包含这些数据,数据通过表单的形式传输,而不会体现在 url 中。
- get 请求提交的数据最多只有 1024 字节,而 post 方式则没有这个限制
对于 get 和 post 方法应用方面的选择,通常在登录时提交账号和密码,包含了敏感信息。若使用 get 请求,那么用户密码会暴露在 url 中,容易造成信息泄露,因此常用 post 方法发送。上传文件时,由于文件可能过大,也会选用 post 方式。
2.2 七个主要方法:
| 方法 | 描述 |
|---|---|
| requests.request | 发送请求,支撑以下各方法 |
| requests.get | 向网页发送get请求,获取网页信息(GET) |
| requests.post | 向网页发送post请求(POST) |
| requests.put | 向网页发送put请求(PUT) |
| requests.head | 获取网页请求头信息(HEAD) |
| requests.patch | 向网页提交局部修改请求(PATCH) |
| requests.delete | 向网页提交删除请求(DELETE) |
| requests.Session | 会话,相比于直接requests请求,具有保持功能 |
3. 主要的使用方法
3.1 requests.request(method, url, **kwargs)
method 设置请求方式(get、post、put、head、patch、delete)
url 设置请求地址
kwargs 控制访问参数
request 方法中各方法的参数与以下相应的方法相同。
3.2 requests.get(url, params=None, **kwargs)
- url 设置请求地址。一般地址中问号后面的可以省略,问号后面的即是请求参数。
- params 设置发送请求时所带的参数,字典或字节流格式,作为额外参数连接到url中(问号后的部分)。可选
- kwargs 控制访问参数,见 kwargs参数表。可选
发送请求:
url = 'https://blog.csdn.net/weixin_52132159' # 我的博客主页
#url = 'https://blog.csdn.net/weixin_52132159?spm=1019.2139.3001.5343'
headers = {
'cookie': '...',
'Referer': '...'
}
params = {'spm': '1019.2139.3001.5343'}
response = requests.get(url, headers=headers, params=params) # 发送请求
3.3 requests.post(url, data=None, json=None, **kwargs)
- url 设置请求地址
- data 为字典、字节序列或文件对象,作为请求的内容,向服务器提交资源时使用,可选
- json 为 JSON格式的数据,作为内容向服务器提交。可选
- kwargs 控制访问参数,见 kwargs参数表。可选
发送请求:
url = 'https://fanyi.so.com/index/search' # 360翻译
headers = {
'pro': 'fanyi'
}
data = {
'eng': 0, # 是否从英文转中文
'query': '你好' # 翻译的单词
}
response = requests.post(url, headers=headers, data=data) # 发送请求
3.4 requests.Session
Session 方法可以实现回话,持续性地发送requests请求,能够跨请求保持cookie。
经实例化后,可用 get、post 等方法发送请求,用法不变。
示例:
response = requests.Session()
response.post('https://fanyi.so.com/index/search')
response.get('https://blog.csdn.net/weixin_52132159')
3.4 其他
- requests.put(url, data=None, **kwargs)
- requests.head(url, **kwargs)
- requests.patch(url, data=None, **kwargs)
- requests.delete(url, **kwargs)
其他的方法使用过程与 get 与 post 类似,都有着kwargs参数表 中的参数,依实际情况选择使用。
4. kwargs 参数表
| 参数 | 说明 |
|---|---|
| params | 送请求时所带的参数,字典或字节流格式,作为额外参数连接到url中 |
| data | 字典、字节序列或文件对象,作为requests的内容,向服务器提交资源时使用 |
| json | JSON格式的数据,作为内容向服务器提交 |
| headers | 字典类型,请求头 |
| cookies | 字典或 CookieJar 对象,从HTTP协议中解析 cookie。字典形式的 cookie 也可放入 headers中 |
| auth | 元组类型,支持HTTP认证功能 |
| files | 字典类型,向服务器传输文件时使用 |
| timeout | 设定等待响应的时间,单位为秒 |
| proxies | 字典类型,设定访问代理服务器 |
| allow_redirects | 布尔类型,默认为True,重定向开关 |
| stream | 布尔类型,默认为True,判断是否对获取内容立即下载 |
| verify | 布尔类型,默认为True,认证SSL证书的开关 |
| cert | 保存本地SSL证书路径的字段 |
参考文章:https://blog.csdn.net/qq_43406976/article/details/104538316
5. 响应内容
发送请求后,返回的是一个 response 对象。我们可以通过该对象的属性和方法获取返回内容。
| 方法或属性 | 说明 |
|---|---|
| response.url | 返回请求的URL |
| response.text | 返回headers中的编码解析的结果,可以通过r.encoding='gbk’来变更解码方式 |
| response.content | 返回二进制结果 |
| response.status_code | 返回响应码,如200、404等 |
| response.headers | 返回请求头 |
| response.cookies | 返回一个RequestsCookieJar对象 |
| response.history | 返回以列表存储的请求历史记录 |
| response.json() | 返回返回结果经json解码后的内容,一般返回一个字典(这是个方法,要带括号) |
6. 使用格式示例
6.1 爬取360翻译(POST)
url = 'https://fanyi.so.com/index/search'
headers = {
'pro': 'fanyi',
}
data = {
'eng': 1,
'query': 'hello'
}
r = requests.post(url, data=data, headers=headers)
print(r.url)
print(r.status_code)
print(r.json()['data']['fanyi'])
输出:
https://fanyi.so.com/index/search
200
你好
6.2 爬取图片/视频
import requests
pic = requests.get('https://profile.csdnimg.cn/E/5/9/3_weixin_52132159').content
with open ('作者头像.jpg','wb') as i:
i.write(pic)
更多爬虫的教学和案例可以见作者的专栏:Python爬虫
– the End –
这篇文章就到这里了,点个赞支持一下吧!
本文收录于专栏:Python爬虫
关注作者,持续阅读作者的文章,学习更多Python知识!
https://blog.csdn.net/weixin_52132159
2021/8/6
已完成的爬虫教程:
推荐阅读
- 【爬虫】想看片了,来一起用 Python 爬取豆瓣电影分类排行榜
- Python爬虫 | 爬取b站北京奥运会开幕式弹幕,有多少人从东京奥运会跑过来的?
- 绝密!Python爬虫告诉你刷分机器人背后的原理!这篇文章差点没过审
- Python每天一道题:昆虫繁殖问题?我把密密麻麻的幼虫和成虫搞定了
- 没想到我连五年级的题目都解不出来?可不能被人小看,让万能的Python登场
- Python:程序猿怎么追女生?教你短短几行代码表白,告别表白尴尬!
- 想学Python不知从何入手?学习Python必备秘籍,附地址,速拿!
- Python标准库:datetime 时间和日期模块 —— 时间的获取和操作详解
- 学习笔记 | PyInstaller 使用教程——用pyinstaller打包exe应用程序【建议收藏!】
【Python爬虫】爬虫利器 requests 库小结的更多相关文章
- 网络爬虫入门:你的第一个爬虫项目(requests库)
0.采用requests库 虽然urllib库应用也很广泛,而且作为Python自带的库无需安装,但是大部分的现在python爬虫都应用requests库来处理复杂的http请求.requests库语 ...
- 从0开始学爬虫9之requests库的学习之环境搭建
从0开始学爬虫9之requests库的学习之环境搭建 Requests库的环境搭建 环境:python2.7.9版本 参考文档:http://2.python-requests.org/zh_CN/l ...
- Python使用urllib,urllib3,requests库+beautifulsoup爬取网页
Python使用urllib/urllib3/requests库+beautifulsoup爬取网页 urllib urllib3 requests 笔者在爬取时遇到的问题 1.结果不全 2.'抓取失 ...
- python爬虫之一:requests库
目录 安装requtests requests库的连接异常 HTTP协议 HTTP协议对资源的操作 requests库的7个主要方法 request方法 get方法 网络爬虫引发的问题 robots协 ...
- PYTHON 爬虫笔记三:Requests库的基本使用
知识点一:Requests的详解及其基本使用方法 什么是requests库 Requests库是用Python编写的,基于urllib,采用Apache2 Licensed开源协议的HTTP库,相比u ...
- 芝麻HTTP: Python爬虫利器之Requests库的用法
前言 之前我们用了 urllib 库,这个作为入门的工具还是不错的,对了解一些爬虫的基本理念,掌握爬虫爬取的流程有所帮助.入门之后,我们就需要学习一些更加高级的内容和工具来方便我们的爬取.那么这一节来 ...
- python爬虫#网络请求requests库
中文文档 http://docs.python-requests.org/zh_CN/latest/user/quickstart.html requests库 虽然Python的标准库中 urlli ...
- 【python爬虫】用requests库模拟登陆人人网
说明:以前是selenium登陆取cookie的方法比较复杂,改用这个 """ 用requests库模拟登陆人人网 """ import r ...
- Python学习笔记之——requests库
requests库一个优雅而简单的用于Python的HTTP库,可以极大的简化我们发送http请求及获取响应的代码. requests是python的第三方库,所以使用之前需要先安装. 1.安装之后就 ...
随机推荐
- EXCEL技能 | EXCEL中实现地图快照,截大图、加水印、保存PNG、TIF、HTML文件
1 应用场景 本文分享笔者使用EXCEL制作地图的体验. 之前网上有人介绍使用小O地图EXCEL插件版能够在EXCEL中标注地图.绘制地图.可视化数据等操作.如下截图.笔者通过实验,其软件保存方式只能 ...
- 另一个角度看元宇宙与RPA:人工世界、平行员工与RPA
另一个角度看元宇宙与RPA:人工世界.平行员工与RPA 从元宇宙到平行员工,人工世界推动的虚实分工利好RPA 机器人是铁打营盘人类是流水兵,未来元宇宙的虚实分工RPA机会巨大 文/王吉伟 元宇宙是平行 ...
- 亲测:三个值得练手的Java实战项目
测试奇谭,BUG不见. 大家好,我是谭叔. 一提到编码,很多小伙伴便感到头疼,特别是半路转行的小伙伴或者没有系统学习过计算机基础的小伙伴. 对于想学而不知道怎么学的小伙伴,我可以分享下我的策略: 刷一 ...
- 【Java例题】4.2 级数求和2
2. 计算级数之和: y=1/1!*x-1/3!*x^3+1/5!*x^5+...+ (-1)^n/(2n+1)!*x^(2n+1). 这里的"^"表示乘方,"!&quo ...
- Android开发 SeekBar(拖动条)的使用
SeekBar是Progress的子类,Progress主要用来显示进度,但是不能和用户互动,而SeekBar则可以供用户进行拖动改变进度值 实现拖动进度条并显示在文本中: <?xml vers ...
- 制作登录页面,点击键盘的 Enter 键或者单击“登录”按钮,验证用户输入的邮箱和密码是否正确
查看本章节 查看作业目录 需求说明: 制作登录页面 点击键盘的 Enter 键或者单击"登录"按钮,验证用户输入的邮箱和密码是否正确 实现思路: 准备登录的静态页面 在页面中嵌入脚 ...
- html 基础 vscode的常用快捷键
1.ctrl+/ //注释代码 2.文件内容查找替换:ctrl+f ctrl+h ,替换一个ctrl+shift+1,替换所有ctrl+alt+enter 3.移动当前行,向上alt+up(方向键↑) ...
- Docker下安装Elasticsearch、ik分词器、kibana
1:使用docker拉取Elasticsearch镜像 docker pull elasticsearch:7.12.0(不加版本号默认是最新版本) 2:查看是否成功下载镜像 docker image ...
- java 线程 总结
1.前言 (1)线程的上一级是进程,进程是程序的一次执行过程,是系统运行程序的基本单位,因此进程是动态的. (2)线程与进程相似,但线程是一个比进程更小的执行单位,也被称为轻量级进程.一个进程在其执行 ...
- Standalone集群搭建和Spark应用监控
注:图片如果损坏,点击文章链接:https://www.toutiao.com/i6815920501530034696/ 承接上一篇文档<Spark词频前十的统计练习> Spark on ...