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. 对XSS的插入的新了解,灵感来自天驿安全

    此次针对的是通过Get请求进行插入的XSS语句,或者dom型的xss,也算是了解到的新的插入方式 首先,JavaScript语言中存在拼接性 可以通过代审后闭合前置语句进行self测试是否可以拼接 s ...

  2. Java锁与非阻塞算法的性能比较与分析+原子变量类的应用

    15.原子变量与非阻塞同步机制 在java.util.concurrent包中的许多类,比如Semaphore和ConcurrentLinkedQueue,都提供了比使用Synchronized更好的 ...

  3. Springcloud-alibaba学习实践(2)- nacos&Eureka Server服务注册实践

    前言:上一篇已搭建好了springcloud服务注册中心(Nacos&Eureka Server),本篇继续代码实践,注册服务到服务中心,本篇只是演示了两种注册中心,后续我们以Nacos注册中 ...

  4. Java初学者作业——计算大庆路小学的面积练习

    返回本章节 返回作业目录 需求说明: 大庆路小学因为装修需要对教室的一侧墙面进行重新粉刷,墙面安装了一面黑板,墙面的长和高以及黑板的长和高. 请编写Java程序计算出需要粉刷的墙面面积.功能要求:输入 ...

  5. python爬虫实例——基于python实现有道云翻译接口

    # 分析包# 分析post请求中参数# 使用python模拟lts.sign.salt参数运算# 执行结果> > 1.按F12对网页进行分析,填写内容后自动翻译的功能一般是通过ajax实现 ...

  6. 【Java】Super

    Super super用于调用父类的属性.方法.构造器,与this相同. super的使用 属性与方法 在子类的方法或构造器中.通过使用"super.属性"或"super ...

  7. 设计模式-Java版-全-附代码-超生动实例

    阅读推荐:设计模式-简单篇 项目地址:https://gitee.com/zwtgit/gof23 学习网站推荐: https://refactoringguru.cn/design-patterns ...

  8. MATLAB中插值算法实现

    %%%1.M文件%(1).以往少的程序可以在命令行窗口进行编码,但大量的程序编排到命令行窗口,%会有造成乱码的危险.(2).如果将命令编成程序存储在一个文件中(M文件),依次运行文件中的命令,则可以重 ...

  9. json 转换C# class(用于对接api

    //说明//使用场景:对接api,返回json结果,直接转换C# class//如何使用:复制下面js代码在浏览器控制台执行 ` "order_item_id": "28 ...

  10. manjaro20WPS缺少字体

    宋体等 sudo pacman -S ttf-wps-fonts Ariel和Times New Roman https://askubuntu.com/questions/651441/how-to ...