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. c语言基本数据类型short、int、long、char、float、double大小及命名规则

    C 语言包含的数据类型: 一.数据类型与“模子”short.int.long.char.float.double 这六个关键字代表C 语言里的六种基本数据类型. 怎么去理解它们呢? 举个例子:见过藕煤 ...

  2. Spring Cloud第一篇 | Spring Cloud前言及其常用组件介绍概览

    ​ ​本文是Spring Cloud专栏的第一篇文章,了解本篇文章内容有助于更好的理解后面文章 ​ 一.网站架构演变过程 1-1.传统架构 传统的SSH架构,分为三层架构 web控制层.业务逻辑层.数 ...

  3. 2019-2020-1 20199304《Linux内核原理与分析》第二周作业

    计算机工作原理 存储程序计算机模型 冯·诺依曼体系结构 冯·诺依曼体系结构如图所示: 冯·诺依曼体系结构包含五大部分 运算器:在控制器的统一控制下,负责对数据进行加工.完成各种运算,如算术运算.逻辑运 ...

  4. VMware修改默认开机方式

    .首先删除已经存在的符号链接 ---------------------------------------------------------------------------------- rm ...

  5. pod install/update速度慢或失败的解决方案实践

    本文基于 https://www.cnblogs.com/dabaomo/p/9634727.html 声明 坚决拥护党的领导,本文章所用技术乃出于工作需要,敬请谅解. 正文 可以先过去快速浏览一遍再 ...

  6. 基于netty4.x开发时间服务器

    在写代码之前 先了解下Reactor模型: Reactor单线程模型就是指所有的IO操作都在同一个NIO线程上面完成的,也就是IO处理线程是单线程的.NIO线程的职责是: (1)作为NIO服务端,接收 ...

  7. MySQL数据库开发的36条原则

    欢迎添加华为云小助手微信(微信号:HWCloud002 或 HWCloud003),验证通过后,输入关键字"加群",加入华为云线上技术讨论群:输入关键字"最新活动&quo ...

  8. 为什么查询出来的数据保存到Arraylist?插入删除数据为啥用LinkedList?

    引言:这是我在回答集合体系时,被问到的一个问题,也是因为没有深入学习所以回答的并不是很好,所以这两天看了一下,以下是我的一些回答与学习方法. 学习方法:我们学习,系统性的学习肯定是比零散的学习更有效的 ...

  9. mac本地如何搭建IPv6环境测试你的APP

    转自:http://www.cocoachina.com/ios/20160525/16431.html 投稿文章,作者:请勺子喝杯咖啡(简书) IPv6的简介 IPv4 和 IPv6的区别就是 IP ...

  10. 使用flink实现一个topN的程序

    topN功能是一个非常常见的功能,比如查看最近几分钟的阅读最高数,购买最高数. flink实现topN的功能也非常方便,下面就开始构建一个flink topN的程序. 还是像上篇博客一样,从kafka ...