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应用程序【建议收藏!】