python requests库作用_python Requests库入门
一、Requests 库的安装
对Requests库 了解更多请移步:http://www.python-requests.org
安装操作:
win平台:“以管理员身份运行” cmd ,执行 pip install requests
测试安装是否成功:
>>> import requests
>>> r=requests.get('http://www.baidu.com')
>>> print(r.status_code)
200
二、Requests 库的7个主要方法
requests.request() 构造一个请求,支撑以下各方法的基础方法
requests.get() 获取HTML网页的主要方法,对应HTTP的GET
requests.head() 获取HTML网页头信息的方法,对应HTTP的HEAD
requests.post() 向HTML网页提交POST请求的方法,对应HTTP的POST
requests.put() 向HTML网页提交PUT请求的方法,对应HTTP的PUT
requests.patch() 向HTML网页提交局部修改请求,对应于HTTP的PATCH
requests.delete()向HTML页面提交删除请求,对应于HTTP的DELETE
【最常用方法】requests.get()
Response = requests.get(url)
#requests.get(url) 构造一个向服务器请求资源的Request对象
#Response 返回一个包含服务器资源的Response对象。是爬虫返回的全部内容
三、Response 对象的属性:
r.status_code HTTP请求的返回状态,200表示连接成功,404表示失败(只要不是200,返回的请求都是失败的)
r.text HTTP响应内容的字符串形式,即,url对应的页面内容
r.encoding 从HTTP header中猜测的响应内容编码方式
r.apparent_encoding 从内容中分析出的响应内容编码方式(备选编码方式)
r.content HTTP响应内容的二进制形式
例子:在使用requests.get()方法获取网上资源的时候,有一个基本的流程:首先用 r.status_code来检查返回的 Response 对象的状态。如果是200,就使用 r.encoding r.apparent_encoding r.content 等去解析返回的内容。如果返回的状态码是 404或者其他,那就说明这次url的访问由于某种原因出错了或产生异常。
>>> import requests
>>> r=requests.get('http://www.baidu.com')
>>> print(r.status_code)
200
>>> r.text #内容中很多都是乱码,看不清它的内容是什么?
'href=http://s1.bdstatic.com/r/www/cache/bdorz/baidu.min.css>
çx99¾åº¦ä¸x80ä¸x8bï
>>> r.encoding #接下来查看一下,它从的HTTP header中猜测的编码是什么?
'ISO-8859-1'
>>> r.apparent_encoding #再查一下(备选编码),它从从内容中分析出的编码是什么?
'utf-8'
>>> r.encoding = 'utf-8' #用备选编码 替换r.encoding的编码
>>> r.text #此时就能发现,有中文的字符
'href=http://s1.bdstatic.com/r/www/cache/bdorz/baidu.min.css>
百度一下,你就知道
注解: 简单说网络上的资源均有它的编码,如果没有编码,我们将没办法用有效的解析方式使得人类对信息可读。 r.encoding是从HTTP header 中的 charset 字段中获得的,如果HTTP header 中有这样一个字段,说明我们访问的服务器对它资源的编码是有要求的,而这样的编码会获得回来,存在 r.encoding中。但是,并不是所有的服务器对它的资源编码都是有相关要求,所以,如果当HTTP header 中不存在 charset 字段,我们将默认编码设为 ISO-8859-1,但这样的编码并不能解析中文。 继而,Requests库 提供了另外一个 备选编码 r.apparent_encoding,其根据HTTP的内容部分,去分析内容中出现文本可能的编码形式,而不是从HTTP header头部分。原则来说此编码更加准确。
(一)爬取网页的通用代码框架
通用代码框架就是一组代码,它可以准确的可靠的爬取网页上的内容。我们在用Requests库进行网页访问的时候,经常用到 requests.get()函数,但由于网络连接有风险,所以它的异常处理很重要
理解 Response= requests.get(url) 函数,Response的异常处理:
异常 说明
requests.ConnectionError 网络连接错误异常,如DNS查询失败、拒绝连接等
requests.HTTPError HTTP错误异常
requests.URLRequired URL缺失异常
requests.TooManyRedirects 超过最大重定向次数,产生重定向异常
requests.ConnectTimeout 连接远程服务器超时异常
requests.Timeout 请求URL超时,产生超时异常
注解:Response对象返回了所有的网页内容,同时也提供了r.raise_for_status()方法
r.raise_for_status()
此方法是专门与异常打交道,它的内部判断 r.status_code 是否等于200?
如果是200,它将表示返回的内容是正确的。
如果不是200,它将产生一个HTTPError的异常.
例子:通用代码框架
import requests
def getHTMLText(url):
try:
r = requests.get(url,timeout=30)
r.raise_for_status() #如果状态不是200,引发HTTPError异常
r.encoding = r.apparent_encoding
return r.text
except:
return'产生异常'
if _name_=='_main_':
url = 'http://www.baidu.com'
print(getHTMLText(url))
使用此方法,不需要增加额外的if语句,该语句便于利用try‐except进行异常处理。
这样一个通用代码框架可以有效地处理我们在访问或爬取网页过程中,可能出现的一些错误或网络不稳定造成的现象。
通过代码框架实际上它最大的作用,是能够使得用户访问或爬取网页变得更有效、更稳定、更可靠。
(二)HTTP协议 及 Requests库方法
HTTP(Hypertext Transfer Protocol)超文本传输协议。是一个基于“请求与响应”模式的、无状态的应用层协议。
简单说,用户发一些请求,服务器做相关响应,这就是请求与响应的模式。无状态,是指第一次请求与第二次请求之间并没有相关的关联,应用层协议,指该协议工作在TTP协议之上。
HTTP协议采用URL作为定位网络资源的标识,URL是通过HTTP协议存取资源的Internet路径,一个URL对应一个数据资源。格式如下:
http://host[:port][path] 例如:http://www.bit.edu.cn 或者 http://220.181.111.188/duty
host 合法的Internet主机域名或IP地址
port 端口号,缺省端口为80(可省略)
path 请求资源在主机或IP地址的服务器上,它所包含的内部路径
HTTP协议对资源的操作
方法 说明
GET 请求获取URL位置的资源
HEAD 请求获取URL位置资源的响应消息报告,即获得该资源的头部信息
POST 请求向URL位置的资源后附加新的数据
PUT 请求向URL位置存储一个资源,覆盖原URL位置的资源
PATCH 请求局部更新URL位置的资源,即改变该处资源的部分内容
DELETE 请求删除URL位置存储的资源
(三)详解Requests 库的7个主要方法
【方法1】requests.request(method,url,**kwargs)
method :请求方式,7种GET / HEAD / POST / PUT / PATCH / delete / OPTIONS
url :拟获取页面的url链接
**kwargs:13个控制访问的参数 ,分别如下 ↓
params :字典或字节序列,作为参数增加到url中
data :字典、字节序列或文件对象,作为Request的内容
json :JSON格式的数据,作为Request的内容
headers :字典,HTTP定制头
cookies :字典或CookieJar,Request中的cookie
auth :元组,支持HTTP认证功能
files :字典类型,传输文件
timeout :设定超时时间,秒为单位
proxies :字典类型,设定访问代理服务器,可以增加登录认证
allow_redirects:True / False,默认为True,重定向开关
stream :True / False,默认为True,获取内容立即下载开关
verify :True / False,默认为True,认证SSL证书开关
cert :本地SSL证书路径
【方法2】requests.get(url,params=None,**kwargs)
url :拟获取页面的url链接
params :url中的额外参数,字典或字节流格式,可选
**kwargs:12个控制访问的参数
【方法3】requests.head(url,**kwargs)
url :拟获取页面的url链接
**kwargs:12个控制访问的参数
【方法4】requests.post(url,data = None,json = None,**kwargs)
url :拟更新页面的url链接
data :字典、字节序列或文件,Request的内容
json :JSON格式的数据,Request的内容
**kwargs:12个控制访问的参数
【方法5】requests.put(url,data = None,**kwargs)
url :拟更新页面的url链接
data :字典、字节序列或文件,Request的内容
**kwargs:12个控制访问的参数
【方法6】requests.patch(url,data = None,**kwargs)
url :拟更新页面的url链接
data :字典、字节序列或文件,Request的内容
**kwargs:12个控制访问的参数
【方法7】requests.delete(url,**kwargs)
url :拟删除页面的url链接
**kwargs:12个控制访问的参数
内容来源于网络如有侵权请私信删除
python requests库作用_python Requests库入门相关推荐
- python numpy库作用_python Numpy库
一.导入库 import numpy as np 二.创建 1.numpy中只有一种数据类型:ndarray,表示n维数组 创建ndarray数组: -由列表或者元组类型创建数组 -有元组类型创建数组 ...
- python pandas库作用_python pandas库的一些使用总结
pandas用于处理.csv excel html 文本等文件.在数据分析方面起到很大的作用. pandas.Series(数据,index=[]) 索引数据,默认格式数字按序 ...
- python requests是什么_python requests库学习
Requests python的request库官方介绍就是让HTTP服务人类,所以从这点我们就可以知道request库是为了让我们更加方便的进行http相关的各种操作 我们学习request有什么用 ...
- python库作用_python 里 certifi 库的作用
python 里 certifi 库的作用 安装了certifi之后,和requests库一样也有一个cacert.pem,可以用编辑器打开cacert.pem,里面包含了很多可信任知名公司的证书/公 ...
- python requests的作用_Python爬虫第一课:requests的使用
requests模块的入门使用 注意是requests不是request. 1.为什么使用requests模块,而不是用python自带的urllib requests的底层实现就是urllib re ...
- python标准库random中函数的作用_Python随机函数库random的使用方法详解
Python随机函数库random的使用方法详解 前言 众所周知,python拥有丰富的内置库,还支持众多的第三方库,被称为胶水语言,随机函数库random,就是python自带的标准库,他的用法极为 ...
- python 图形库有哪些_python常用库有哪些
今天将介绍20个常用工具的Python库,我相信你看完之后也会觉得离不开它们. 它们是:(推荐学习:Python视频教程) Requests.Kenneth Reitz写的最富盛名的http库.每个P ...
- python requests 代理超时_python requests 超时与重试
一 源起: requests模块作为python爬虫方向的基础模块实际上在日常实际工作中也会涉及到,比如用requests向对方接口url发送POST请求进行推送数据,使用GET请求拉取数据. 但是这 ...
- python安卓库拍照_Python Faker库的实战,用Faker库生成伪造的安卓通讯录
老板的需求总是各种各样的,作为程序员就只能想办法实现.这不突然让帮他生成几个虚假的通讯录.具体需求是这样的:老板给我个电话簿,让我给这个电话簿添加上姓名,公司,邮箱之类的数据然后导入到安卓手机的通讯录 ...
最新文章
- javascript 遍历对象
- SAP RETAIL 寄售模式公司间STO收发货过账后的观察
- Javascript编写的简易计算器
- [CF544D]Destroying Roads_最短路_bfs
- 1700 Crossing River
- Java多线程(十一)之线程池深入分析(上)
- asp.net core AuthenticationMiddleware 在WebApi中的的使用
- 重磅!专硕学制改为三年,多所高校发文!
- 微软企业库4.1学习笔记(十五)缓存模块3 使用数据库作为后端存储
- java线程打水问题_Java 多线程 wait() 虚假唤醒问题
- ajax/test1.txt,ajax原生请求方法.txt
- 判断单链表是否存在环及环的入口点
- L1-051 打折 (5 分)—团体程序设计天梯赛
- foxmail创建163公司企业邮箱的时候会出现ERR Unable to log on
- Delphi视频教程第二季
- 【接口时序】8、DDR3驱动原理与FPGA实现(一、DDR的基本原理)
- 画圆的函数----(基于MATLAB)
- 机器人阿莫西_HELLO!阿莫西 本田机器人ASIMO
- 医学图像配准中的深度学习综述论文解读
- 计算机休眠会断电吗,电脑「睡眠」和「休眠」原来有这么大区别,下次别用错了。...
热门文章
- 关于 Node.js scoped module 的一些理解
- SAP Spartacus 事件服务 Event Service 使用介绍
- Angular单元测试框架里API toHaveBeenCalledTimes的工作原理
- SAP document builder功能一览
- SAP Business Application Studio和SAP云平台Destination
- 介绍一个好用的Chrome扩展,能高效管理cookie
- SAP CRM Fiori My note应用的note header设计
- SAP CRM relationship cleanup
- windows环境里React-Native运行失败的原因之一,安卓模拟器未启动
- 如何把SAP Kyma和SAP Cloud for Customer连接起来