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. python json序列化与反序列化操作

    python json序列化与反序列化操作 # dumps() dict-->str 序列化 # loads() str---dict 反序列化 result1 = json.dumps({'a ...

  2. SpringBoot写一个登陆注册功能,和期间走的坑

    文章目录 前言 1. 首先介绍项目的相关技术和工具: 2. 首先创建项目 3. 项目的结构 3.1实体类: 3.2 Mapper.xml 3.3 mapper.inteface 3.4 Service ...

  3. ios中数据存储方式

    以上三种不能存储大批量数据 plist只能先取出来 里面的数据 覆盖存储 SQLLite3 数据库 纯C语言 轻量级 CoreData  基于SQLLite3 OC版本 重量级 大批量数据缓存 SQL ...

  4. Spring Data JPA 条件查询的关键字

    Spring Data JPA 为此提供了一些表达条件查询的关键字,大致如下: And --- 等价于 SQL 中的 and 关键字,比如 findByUsernameAndPassword(Stri ...

  5. Cannot read property 'nodeType' of null; audio元素默认样式下载按钮

    1.chrome-->console抛出如下错误: Uncaught TypeError: Cannot read property 'nodeType' of null 错误原因:从stack ...

  6. 三角形列表前缀.html

    发过火刮腹湔肠封官赐爵法规及法规及提供 发过火刮腹湔肠封官赐爵法规及法规及提供 发过火刮腹湔肠封官赐爵法规及法规及提供 发过火刮腹湔肠封官赐爵法规及法规及提供 发过火刮腹湔肠封官赐爵法规及法规及提供 ...

  7. Linux下基于Docker部署.Net Core web api项目

    Docker的好处我就不说啦,问问度娘就知道了

  8. React 事件总结

    目录 一 绑定事件处理函数 1.1 鼠标类 1.2 拖拽事件: 1.3 触摸 1.4 键盘 1.5 剪切类 1.6 表单类 1.7 焦点事件 1.8 UI元素类 1.9 滚动 1.10 组成事件 1. ...

  9. [TimLinux] 开博一个月了

    做事情,怕的确实是坚持!为了自己尽可能的每天一篇博文,时常在下班后,23点开始写博,有时候写到接近一点钟.但是这第一个月,确实坚持下来了.平均每天一篇.写博的过程,其实是: 知识的总结过程: 因为要求 ...

  10. HDU3032 Nim or not Nim?(Lasker’s Nim游戏)

    Nim or not Nim? Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)T ...