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.

  1. 所有会话对象发出去的请求 会自动保持状态

  2. 对同一主机发送多个请求, 重用TCP连接

  3. session 所有的api和requests都是一样的

  4. 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第三方库的更多相关文章

  1. Python 离线 安装requests第三方库

    一.介绍 requests是Python的一个HTTP客户端库,跟urllib,urllib2类似,不过requests的优势在于使用简单,相同一个功能,用requests实现起来代码量要少很多.毕竟 ...

  2. Python——安装requests第三方库

    使用pip安装 在cmd下cd到这个目录下C:\Python27\Scripts,然后执行pip install requests 在cmd 命令行执行 E:   进入e盘 cd  Python\pr ...

  3. python requests第三方库详解

    异常处理:try ... except ...

  4. Python安装第三方库的安装技巧

    电脑:Windows10 64位. Python IDE 软件:JetBrains PyCharm Community Edition 2018.1.3 x64 Python version : Py ...

  5. Python 安装 第三方库的安装技巧

    Python 安装 第三方库的安装技巧 我的电脑:Windows 10 64位. Python IDE 软件:PyCharm 2016.1.4 Python version : Python 3.5. ...

  6. Python 标准库、第三方库

    Python 标准库.第三方库 Python数据工具箱涵盖从数据源到数据可视化的完整流程中涉及到的常用库.函数和外部工具.其中既有Python内置函数和标准库,又有第三方库和工具.这些库可用于文件读写 ...

  7. python 3.x 爬虫基础---常用第三方库(requests,BeautifulSoup4,selenium,lxml )

    python 3.x 爬虫基础 python 3.x 爬虫基础---http headers详解 python 3.x 爬虫基础---Urllib详解 python 3.x 爬虫基础---常用第三方库 ...

  8. python第三方库requests简单介绍

    一.发送请求与传递参数 简单demo: import requests r = requests.get(url='http://www.itwhy.org') # 最基本的GET请求 print(r ...

  9. 爬虫 Http请求,urllib2获取数据,第三方库requests获取数据,BeautifulSoup处理数据,使用Chrome浏览器开发者工具显示检查网页源代码,json模块的dumps,loads,dump,load方法介绍

    爬虫 Http请求,urllib2获取数据,第三方库requests获取数据,BeautifulSoup处理数据,使用Chrome浏览器开发者工具显示检查网页源代码,json模块的dumps,load ...

随机推荐

  1. zabbix自动发现 url 以及对http返回状态码监控实现 告警

    2019-06-04 18:39:12 目的:批量监控业务URL的返回状态码,通过zabbix监控判断业务好坏. 1.zabbix安装 请查看此永久链接:https://www.cnblogs.com ...

  2. mac 下面 vim 编辑器 开启语法高亮

    cp /usr/share/vim/vimrc ~/.vimrc 拷贝默认的配置文件 vim ~/.vimrc 编辑该文件 在文件的最后加入 syntax on 保存退出即可

  3. IDEA IntelliJ/ DataGrip 修改自动补全快捷键

    系统默认的是Tab键,个人喜欢用空格键作为自动补全键,设置方法如下 Setting-->Keymap-->Editor Actions:Choose Lookup Item Replace ...

  4. php 图片指定留白叠加缩放

    遇到这样一个需求:原图大小不一,而且留白也大小不一,需要将原图切出来一个核心图,然后将图片左右留白,组成一个其他尺寸的图片.换句话说,原图在新图片中的位置是可以控制的. 这里思路是:先创建一个规定大小 ...

  5. 机器学习笔记(九)---- 集成学习(ensemble learning)【华为云技术分享】

    集成学习不是一种具体的算法,而是在机器学习中为了提升预测精度而采取的一种或多种策略.其原理是通过构建多个弱监督模型并使用一定策略得到一个更好更全面的强监督模型.集成学习简单的示例图如下: 通过训练得到 ...

  6. .Net core_Excel 导出二维码(以导出箱单为例)

    [AccessLogAttribute(Note = "导出条形码箱单 — 条形码")]public ActionResult ExportContract(string INNE ...

  7. Spring bean 初始化失败

    在一个*context.xml 配置文件 A 中, 有个定义的bean B, 把 A 添加到 application-context.xml 中,发现B不能正常初始化. 解决办法: 添加 <co ...

  8. Java并发编程学习随笔 (一) 使用run() 和 start()的差别

    java多线程run()和start()的区别 当你启动线程,使用start(),系统会把run()方法当成线程执行体来处理,这是正常的,也是正确的情况.但是,当你启动线程时,调用run()方法,系统 ...

  9. 洛谷 CF402A Nuts 题解

    本蒟蒻又来发题解啦! 这题是个紫题? 好吧,恶意评分可海星? 回到正题 这题很明显是贪心啊: 有a个坚果,b个隔板,x个隔板,最多分成v个区间. 那么我们的贪心策略是: 如果一共使用的挡板小于x,且当 ...

  10. 智能家居CC2530功率放大组网RFX2401C和AT2401C的区别

    两者最大的区别就是RFX2401C的增益为12dbmAT2401C的增益为14dbm这就会导致AT2401C的功耗会比RFX2401C大一点点,但距离也会相对更远,并且增加了EDS防静电等级,多出2个 ...