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. See you~(hdu1892)

    See you~ Time Limit: 5000/3000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Total Su ...

  2. Andrey and Problem

    B. Andrey and Problem time limit per test 2 seconds memory limit per test 256 megabytes input standa ...

  3. Codeforces 931C:Laboratory Work(构造)

    C. Laboratory Work time limit per test : 1 second memory limit per test : 256 megabytes input : stan ...

  4. CHARACTERIZING ADVERSARIAL SUBSPACES USING LOCAL INTRINSIC DIMENSIONALITY

    目录 概 主要内容 LID LID估计 算法 实验 1 2 3 4 5 Ma X, Li B, Wang Y, et al. Characterizing Adversarial Subspaces ...

  5. TYPEC转HDMI+PD+USB3.0拓展坞三合一优化方案|CS5266 dmeoboard原理图

    CS5266 Capstone 是Type-C转HDMI带PD3.0快充的音视频转换芯片. CS5266接收器端口将信道配置(CC)控制器.电源传输(PD)控制器.Billboard控制器和displ ...

  6. partial write bypass PIE

    第一篇博客,请允许我水一下.BUUCTF上的一题:linkctf_2018.7_babypie 检查一下保护机制: 1 Arch: amd64-64-little 2 RELRO: Partial R ...

  7. docker容器的本质

    1. 容器其实就是Linux下一个特殊的进程: 2. Docker容器通过namespace实现进程隔离通过cgroups实现资源限制: 3. Docker镜像(rootfs)是一个操作系统的所有文件 ...

  8. map类型转string必须用.toString

  9. springboot插件打包跳过单元测试

    只需在pom.xml添加如下即可 <skipTests>true</skipTests> pom文件如下 <?xml version="1.0" en ...

  10. Word文档学习小练习链接

    1. < Word2010初学> https://www.toutiao.com/i6487370439910752782/ 2. <Word2010格式化可爱的家乡> htt ...