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. hasChildNodes()

    hasChildNodes():方法可以用来检查一个给定的元素是否有子节点. booleanValue = element.hasChildNodes 这个方法将返回一个布尔值true或false.如 ...

  2. Oracle temp table

    Tow kinds of temp table data keep method. One is delete when commit Anothe one is preseve when commi ...

  3. 对python的初步了解

    一,Python简介 Python 是一个高层次的结合了解释性.编译性.互动性和面向对象的脚本语言. Python 的设计具有很强的可读性,相比其他语言经常使用英文关键字,其他语言的一些标点符号,它具 ...

  4. 对于Python函数与方法,你可能存在些误解

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

  5. 带着canvas去流浪系列之六 绘制雷达图

    [摘要] 用canvas原生API实现百度Echarts基本图表. 示例代码托管在:http://www.github.com/dashnowords/blogs 一. 任务说明 使用原生canvas ...

  6. 关于Python中的错误与异常,你是否了解的够仔细?

    每次版本结束都描述这着同样的错误,相似的问题,但始终没见解决.所以今天,我就来总结下Python的错误与异常! 异常与错误 错误 语法错误 可以通过IDE或者解释器给出提示的错误 opentxt('a ...

  7. Spring Quartz定时任务设置

    这里主要记录一下定时任务的配置,偏向于记录型的一个教程,这里不阐述Quartz的原理. 首先,在Spring配置文件里配置一个自己写好的一个包含执行任务方法的一个类. <bean id=&quo ...

  8. python中for循环删除不全的问题

    以前遇到过一次,删除列表中符合条件的元素,for循环挨个判断是否符合条件,符合就删除,删完结果发现有一个符合条件的没有删掉. 那么如果想删除某些列表中的元素,比如有一个a列表,a=[11,22,33, ...

  9. 用Java编程语言对一个无序整形数组进行排序(冒泡排序,选择排序,插入排序)

    public static void main(String[] args) { /** * 冒泡排序 * 思路:每个轮次都让第一个数和其后所有的数进行轮比较,如果这轮的第一个数大则和其下一个数交换位 ...

  10. openlayers4 入门开发系列之前端动态渲染克里金插值 kriging 篇(附源码下载)

    前言 openlayers4 官网的 api 文档介绍地址 openlayers4 api,里面详细的介绍 openlayers4 各个类的介绍,还有就是在线例子:openlayers4 官网在线例子 ...