requests第三方库
requests第三方库
简介:
requests是一个优雅而简单的Python 第三方HTTP请求库,专为人类而构建。
requests的官方文档同样也非常的完善详尽,而且少见的有中文官方文档:http://cn.python-requests.org/zh_CN/latest/。
英文文档:http://docs.python-requests.org/en/master/api/

安装:
pip install requests -i https://pypi.doubanio.com/simple
一、请求(requests)
每一个请求方法都有一个对应的API。比如GET请求就使用get()方法, 而POST请求就使用post()方法,并且将需要提交的数据传递给data参数即可
请求方法
get 获取页面数据
import requests
url = "https://www.baidu.com"
headers = {
"User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) \
Chrome/73.0.3683.86 Safari/537.36",
"Referer":"https://www.baidu.com"
}
resp = requests.get(url, headers=headers)
post 提交数据到指定资源
url = "http://httpbin.org/post"
form_data = {
'username':'yelan',
'password':'xxxxxxx'
}
resp = requests.post(url=url, data=form_data)
其他的请求类型
resp = requests.put(url="http://httpbin.org/put", data=None) # 修改
resp = requests.delete("http://httpbin.org/delete") # 删除
resp = requests.head("http://httpbin.org/head") # 请求头部
resp = requests.options("http://httpbin.org/options") # 查看服务器性能
二、响应(response)
| 属性/方法 | 说明 |
|---|---|
| text属性 | 返回时的文本内容(html); 当然对返回的数据使用 resp.content.decode()就相当于resp.text |
| content属性 | 返回的二进制的响应数据 |
| json方法 | 对json数据转dict; 只有返回的数据是json是才可以使用 |
| 测试网站: http://httpbin.org/post | 返回的都是json数据 |
| resp.encoding = 'utf-8' | 指定编码 |
| status_code属性 | 响应状态码 |
| headers属性 | 响应头部(字典) |
| cookies属性 | 响应的set-cookies |
| url 属性 | 访问的url |
| history属性 | 返回响应的历史 [使用响应对象的 history 属性来追踪重定向] |
三、参数
urllib3.disable_warnings() # 禁用警告
| 参数 | 说明 |
|---|---|
| url | 请求的url |
| params=None | get请求携带的参数, 一般用于查询或者搜索(返回的数据在args键中)。对于一键多值的key,而value用一个列表。 如:params = { 'name': 'yelan', 'hobby': ['django', 'play'] } |
| data=None | post请求提交的数据(如表单) |
| headers=None | 请求头部信息 |
| json=None | 发送请求时携带json数据(返回的数据在键data中,当然也在json中) |
| cookies=None | 请求携带的cookies;当然也可以把cookies更新到headers的头部信息;[Dict或CookieJar对象] |
| allow_redirects=True | bool类型 请求是默认开启重定向的, False禁止重定向。[Enable启用/disable禁用] |
| proxies=None | http代理, 是一个字典 [字典映射协议到代理的URL] |
| verify=None | 请求时是否验证verify |
| stream | stream=False 响应内容将立即下载 # stream=True将以流的形式下载 |
proxies # http代理, 是一个字典 [字典映射协议到代理的URL]
proxies = {
"http":"http://221.6.32.206:41816",
"https":"https://221.6.32.206:41816"
}
resp = requests.get('http://httpbin.org/ip', proxies=proxies)
verify # 请求时是否验证SSL证书;默认验证的,关闭verify=False即可
import urllib3
urllib3.disable_warnings() # 禁用警告信息
# 如果我们访问的目标网站,证书有问题,或者我们使用了代理服务的证书有问题,
# 在这种情况下,如果我们还是要对这些目标发送请求,那么我可以关闭requests的证书验证
resp = requests.get(url="http://www.12306.com", headers=headers, verify=False)
stream # stream=False 响应内容将立即下载 # stream=True将以流的形式下载
resp = requests('http://httpbin.org/bytes/102400', stream=True)
for chunk in resp.iter_conten(chunk_size=1024):
print(chunk)
with ...
files (文件上传)
files = {}
with open("favuicon.ico", "rb") as f:
files.update({"file": f.read()})
resp = requests.post("http://httpbin.org/post", files=files)
# 当然最好指定上传文件的content-type, 将其更新到headers中携带
allow_redirects=False # 关闭重定向
resp = requests.get('http://github.com', allow_redirects=False)
print(r.headers) # 该网址会重定向,关闭重定向后,无响应数据
auth (身份认证)
# 如果访问的网站,需要我们验证用户身份信息(如 用户名 密码)
from request.auth import HTTPBasicAuth url = 'http://need authentication of url'
resp = requests.get(url, auth=('username', 'password')) # 其实上面的auth参数是HTTPBasicAuth的实例,它会默认使用HTTPBasicAuth这个类来验证:
requests.get(url, auth=HTTPBasicAuth('username', 'password'))
timeout (设置超时)
API
requests底层api接口 ==> request :
def request(self, method, url,
params=None, data=None, headers=None, cookies=None, files=None,
auth=None, timeout=None, allow_redirects=True, proxies=None,
hooks=None, stream=None, verify=None, cert=None, json=None):
pass
四、session 会话对象
session能够自动的整合每次请求返回的set-cookie, 并且在后续的请求中自动携带.
就是说你使用session对象来发送请求, 那么返回的set-cookie会自动保存和整合 并自动在后续请求中携带上. 就不用手动给后续请求设置cookies.
所有会话对象发出去的请求 会自动保持状态
对同一主机发送多个请求, 重用TCP连接
session 所有的api和requests都是一样的
Session 类中封装了requests所需的所有请求
【常用于模拟登录】
import requests url = 'http://httpbin.org/get' # 该测试网址返回的都是json数据 session = requests.Session()
resp = session.get(url, headers=headers)
print(resp.text)
print(resp.json()) # 设置整个headers
session.headers = {
"User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) \
Chrome/73.0.3683.86 Safari/537.36"
}
# 如果需要添加或者更新headers
referer = {'Referer': 'http://www.baidu.com'}
session.headers.update(referer)
模拟豆瓣登录
import requests
from Spiders_class.demo_03 import my_info as mb headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36",
"Referer": "https://accounts.douban.com/passport/login"
}
login_url = 'https://accounts.douban.com/j/mobile/login/basic' # 登录请求的url
login_data={
"ck": "",
"name": mb.user,
"password": mb.pwd,
"remember": "false",
"ticket": "",
}
personal_url = 'https://www.douban.com/people/197134290/' # 用户个人中心 # session能够自动的整合每次请求返回的set-cookie, 并且在后续的请求中自动携带. session = requests.Session()
session.headers = headers # 在会话时就携带头部信息(整个headers)
resp = session.post(login_url, data=login_data)
response = session.get(personal_url)
response = 'utf-8'
print(response.text)
开发流程:
1.找到目标数据(如需要请求的目标url)
2.分析请求流程(从目标页面分析、匹配到所有页面的url)
3.发起http请求(对所有的url发起请求;多线程)
4.提取清洗数据(re、xpath等以及其他模块的方法)
5.数据持久化(构造结构化数据、保存到文件或数据库)
requests第三方库的更多相关文章
- Python 离线 安装requests第三方库
一.介绍 requests是Python的一个HTTP客户端库,跟urllib,urllib2类似,不过requests的优势在于使用简单,相同一个功能,用requests实现起来代码量要少很多.毕竟 ...
- Python——安装requests第三方库
使用pip安装 在cmd下cd到这个目录下C:\Python27\Scripts,然后执行pip install requests 在cmd 命令行执行 E: 进入e盘 cd Python\pr ...
- python requests第三方库详解
异常处理:try ... except ...
- Python安装第三方库的安装技巧
电脑:Windows10 64位. Python IDE 软件:JetBrains PyCharm Community Edition 2018.1.3 x64 Python version : Py ...
- Python 安装 第三方库的安装技巧
Python 安装 第三方库的安装技巧 我的电脑:Windows 10 64位. Python IDE 软件:PyCharm 2016.1.4 Python version : Python 3.5. ...
- Python 标准库、第三方库
Python 标准库.第三方库 Python数据工具箱涵盖从数据源到数据可视化的完整流程中涉及到的常用库.函数和外部工具.其中既有Python内置函数和标准库,又有第三方库和工具.这些库可用于文件读写 ...
- python 3.x 爬虫基础---常用第三方库(requests,BeautifulSoup4,selenium,lxml )
python 3.x 爬虫基础 python 3.x 爬虫基础---http headers详解 python 3.x 爬虫基础---Urllib详解 python 3.x 爬虫基础---常用第三方库 ...
- python第三方库requests简单介绍
一.发送请求与传递参数 简单demo: import requests r = requests.get(url='http://www.itwhy.org') # 最基本的GET请求 print(r ...
- 爬虫 Http请求,urllib2获取数据,第三方库requests获取数据,BeautifulSoup处理数据,使用Chrome浏览器开发者工具显示检查网页源代码,json模块的dumps,loads,dump,load方法介绍
爬虫 Http请求,urllib2获取数据,第三方库requests获取数据,BeautifulSoup处理数据,使用Chrome浏览器开发者工具显示检查网页源代码,json模块的dumps,load ...
随机推荐
- 第四章 开始Unity Shader学习之旅(1)
1. 一个最简单的顶点/片元着色器 现在,我们正式开始学习如何编写Unity Shader,更准确的说是,学习如何编写顶点/片元着色器 2.顶点/片元着色器的基本结构 我们在以前已经讲过了Unity ...
- 在flink中使用jackson JSONKeyValueDeserializationSchema反序列化Kafka消息报错解决
在做支付订单宽表的场景,需要关联的表比较多而且支付有可能要延迟很久,这种情况下不太适合使用Flink的表Join,想到的另外一种解决方案是消费多个Topic的数据,再根据订单号进行keyBy,再在逻辑 ...
- 深度学习DeepLearning核心技术理论与实践
深度学习DeepLearning核心技术开发与应用时间地点:2019年11月01日-04日(北京) 联系人杨老师 电话(同微信)17777853361
- 马拉车manacher
目的:线性查找一个串的最长回文子串 时间复杂度:O(n) len[i]表示以i为中心的回文串的半径,mx即为当前计算回文串最右边字符的最大值,p是中心点mid,mx-i和2*p-1关于p对称 http ...
- 深入学习 Arduino LinkedList库(一个变长的集合类数组)
QQ技术互动交流群:ESP8266&32 物联网开发 群号622368884,不喜勿喷 单片机菜鸟博哥CSDN 1.前言 博主是做Android App开发出身的,所以对Java这门语言算是有 ...
- 167. 两数之和 II - 输入有序数组
给定一个已按照升序排列的有序数组,找到两个数使得它们相加之和等于目标数. 函数应该返回这两个下标值 index1 和 index2,其中 index1 必须小于 index2. 说明: 返回的下标值( ...
- 【ES】338- ECMAScirpt 2019 新特性汇总
点击上方"前端自习课"关注,学习起来~ 最近在做的一个活动,大家都可以参与: 送 1600 元超大现金红包啦,走过路过不要错过哦 ~ 最近 ECMAScript2019,最新提案完 ...
- 每周一练 之 数据结构与算法(Dictionary 和 HashTable)
这是第五周的练习题,上周忘记发啦,这周是复习 Dictionary 和 HashTable. 下面是之前分享的链接: 1.每周一练 之 数据结构与算法(Stack) 2.每周一练 之 数据结构与算法( ...
- Python生成器的用法
生成器,一定情况下可以节省很多空间 比如: >>> b = (x for x in range(10)) >>> b <generator object &l ...
- 深度优先搜索 & 广度优先搜索
目录 邻接表 邻接表的深度优先搜索 邻接表的广度优先搜索 临接数组 临接数组的深度优先搜索 临接数组的广度优先搜索 二叉树 二叉树的深度优先搜索 二叉树的广度优先搜索 邻接表 邻接表的深度优先搜索 假 ...