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爬虫】爬虫利器 requests 库小结的更多相关文章

  1. 网络爬虫入门:你的第一个爬虫项目(requests库)

    0.采用requests库 虽然urllib库应用也很广泛,而且作为Python自带的库无需安装,但是大部分的现在python爬虫都应用requests库来处理复杂的http请求.requests库语 ...

  2. 从0开始学爬虫9之requests库的学习之环境搭建

    从0开始学爬虫9之requests库的学习之环境搭建 Requests库的环境搭建 环境:python2.7.9版本 参考文档:http://2.python-requests.org/zh_CN/l ...

  3. Python使用urllib,urllib3,requests库+beautifulsoup爬取网页

    Python使用urllib/urllib3/requests库+beautifulsoup爬取网页 urllib urllib3 requests 笔者在爬取时遇到的问题 1.结果不全 2.'抓取失 ...

  4. python爬虫之一:requests库

    目录 安装requtests requests库的连接异常 HTTP协议 HTTP协议对资源的操作 requests库的7个主要方法 request方法 get方法 网络爬虫引发的问题 robots协 ...

  5. PYTHON 爬虫笔记三:Requests库的基本使用

    知识点一:Requests的详解及其基本使用方法 什么是requests库 Requests库是用Python编写的,基于urllib,采用Apache2 Licensed开源协议的HTTP库,相比u ...

  6. 芝麻HTTP: Python爬虫利器之Requests库的用法

    前言 之前我们用了 urllib 库,这个作为入门的工具还是不错的,对了解一些爬虫的基本理念,掌握爬虫爬取的流程有所帮助.入门之后,我们就需要学习一些更加高级的内容和工具来方便我们的爬取.那么这一节来 ...

  7. python爬虫#网络请求requests库

    中文文档 http://docs.python-requests.org/zh_CN/latest/user/quickstart.html requests库 虽然Python的标准库中 urlli ...

  8. 【python爬虫】用requests库模拟登陆人人网

    说明:以前是selenium登陆取cookie的方法比较复杂,改用这个 """ 用requests库模拟登陆人人网 """ import r ...

  9. Python学习笔记之——requests库

    requests库一个优雅而简单的用于Python的HTTP库,可以极大的简化我们发送http请求及获取响应的代码. requests是python的第三方库,所以使用之前需要先安装. 1.安装之后就 ...

随机推荐

  1. EXCEL技能 | EXCEL中实现地图快照,截大图、加水印、保存PNG、TIF、HTML文件

    1 应用场景 本文分享笔者使用EXCEL制作地图的体验. 之前网上有人介绍使用小O地图EXCEL插件版能够在EXCEL中标注地图.绘制地图.可视化数据等操作.如下截图.笔者通过实验,其软件保存方式只能 ...

  2. 另一个角度看元宇宙与RPA:人工世界、平行员工与RPA

    另一个角度看元宇宙与RPA:人工世界.平行员工与RPA 从元宇宙到平行员工,人工世界推动的虚实分工利好RPA 机器人是铁打营盘人类是流水兵,未来元宇宙的虚实分工RPA机会巨大 文/王吉伟 元宇宙是平行 ...

  3. 亲测:三个值得练手的Java实战项目

    测试奇谭,BUG不见. 大家好,我是谭叔. 一提到编码,很多小伙伴便感到头疼,特别是半路转行的小伙伴或者没有系统学习过计算机基础的小伙伴. 对于想学而不知道怎么学的小伙伴,我可以分享下我的策略: 刷一 ...

  4. 【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 ...

  5. Android开发 SeekBar(拖动条)的使用

    SeekBar是Progress的子类,Progress主要用来显示进度,但是不能和用户互动,而SeekBar则可以供用户进行拖动改变进度值 实现拖动进度条并显示在文本中: <?xml vers ...

  6. 制作登录页面,点击键盘的 Enter 键或者单击“登录”按钮,验证用户输入的邮箱和密码是否正确

    查看本章节 查看作业目录 需求说明: 制作登录页面 点击键盘的 Enter 键或者单击"登录"按钮,验证用户输入的邮箱和密码是否正确 实现思路: 准备登录的静态页面 在页面中嵌入脚 ...

  7. html 基础 vscode的常用快捷键

    1.ctrl+/ //注释代码 2.文件内容查找替换:ctrl+f ctrl+h ,替换一个ctrl+shift+1,替换所有ctrl+alt+enter 3.移动当前行,向上alt+up(方向键↑) ...

  8. Docker下安装Elasticsearch、ik分词器、kibana

    1:使用docker拉取Elasticsearch镜像 docker pull elasticsearch:7.12.0(不加版本号默认是最新版本) 2:查看是否成功下载镜像 docker image ...

  9. java 线程 总结

    1.前言 (1)线程的上一级是进程,进程是程序的一次执行过程,是系统运行程序的基本单位,因此进程是动态的. (2)线程与进程相似,但线程是一个比进程更小的执行单位,也被称为轻量级进程.一个进程在其执行 ...

  10. Standalone集群搭建和Spark应用监控

    注:图片如果损坏,点击文章链接:https://www.toutiao.com/i6815920501530034696/ 承接上一篇文档<Spark词频前十的统计练习> Spark on ...