Advertisement

老嘤学习笔记python——初识requests库

阅读量:

一、 requests 功能概述
二、 requests.get() 参数配置
三、 response 属性
四、 requests 异常处理机制
五、 requests.head 方法
六、 发起请求的方法
七、 requests.post() 方法
八、 requests.put() 方法
九、 不同 HTTP 请求方式的区别分析

一、requests库作用
通过模拟浏览器行为发起网络请求
2.如何使用:
确定目标网页地址,并根据其静态或动态属性进行分类
执行网络请求操作
解析服务器返回的数据
提取所需信息(利用正则表达式匹配文本内容、CSS选择器定位结构化数据或XPath节点提取元数据)
将获取到的信息存储本地或数据库中(包括本地存储、数据库存储以及MySQL、MongoDB、Redis等多种数据库类型)
3.环境安装:
运行命令pip install requests即可完成安装

如何鉴别数据的静态与动态特性?在分析过程中,默认假设所有数据均为静态信息。在网页源代码中存储的所有信息均为静态内容,在分析过程中默认将其视为独立存在的实体。为了提取所需信息,在分析过程中,默认假设所有数据均为静态信息。在获取到所需信息时,则确认所收集的内容属于已被记录下来的静止页面内容;随后可将所收集的信息通过地址导航栏对应的URL路径发送至服务器进行进一步处理

在这里插入图片描述

动态数据:如果在源代码页面没搜到想要的数据,就需要抓包

在这里插入图片描述

打开浏览器开发者工具,进行抓包,(静态数据也可以抓包)

二、requests.get()参数设置
request.get(url,params=None,**kwargs)
其中 url 表示 URL 地址
其中 params 表示 url 中可能存在的额外参数
此外,在 **kwargs 中包含了 12 个用于调节访问权限的相关参数

三、response的属性
请求包含两个对象:一个是请求资源对象Request;另一个是服务器资源对象Response。这里用r表示Response属性。
response.status_code:状态码
response.text:响应内容以字符串形式表示
根据header推断出响应内容的编码方式(基于header中的charset字段);如果未找到charset信息,则默认使用ISO-8859-1编码。
从内容推断出的编码方式(备用编码)
可以通过将r.encoding设置为r.apparent_encoding来更改编码方式
response.content:响应内容以二进制形式表示
response.request:请求内容

在这里插入图片描述

ConnectionError:网络连接问题通常由DNS解析失败引起。
HTTPError:HTTP错误通常涉及状态码不正确或资源不存在。
Requests URLRequired 错误提示缺少必要的URL路径信息。
TooManyRedirects 错误表明已达到最大重试次数限制。
ConnectTimeout 错误显示发送至目标服务器的连接操作未能完成。
Timeout 错误提示因发送至目标URL过程中的长时间未响应导致操作无法完成。

该函数会抛出requests.HTTPError异常当响应状态码并非200。

五、requests.head
requests.head(url)用于fetch网页头部信息,在执行该操作时,请注意后续处理方式。

六章,请求(requests).request()方法
请求数值化形式为method、url及**kwargs
即该函数支持的具体请求数值化形式为method
即该函数支持的主要请求数值化形式包括HTTP classic的方法:GET、HEAD、POST、PUT、PATCH以及delete和OPTIONS

**kwargs:13个控制访问的参数(可选参数,可以不带这些参数)
****1.params:url查询参数
字典或字节序列,能够增加到URL中
比如kv={‘key1’ = ‘value1’,‘key2’=‘value2’}r=requests.request(‘GET’,‘http://python123.io/ws’,params=kv)
print(r.url)
得到http://python123.io/ws?key1=value1&key2=value2
?左边是请求地址,右边是url地址的查询参数
&用于分割每一个参数
无论url中加不加?,最终得到的地址都只会有一个?

在这里插入图片描述

属性名称为data: url。Request的内容可以是字典、字节序列或文件对象。payload = {‘key1’:‘value1’,‘key2:value2’}

3.json请求时使用json提交数据
:json格式的数据,作为Request的内容

****4.headers:字典,请求头

5.cookies:字典或CookieJar,Request中的Cookie。其中包含由服务器配置生成并被读取(包括从响应中获取 cookie值),通过JavaScript脚本解析后提取 cookie数据以及由浏览器自主生成并存储于本地设备上的 cookie项。这些 cookie类型在各自的生命周期管理上有不同的行为特征:其中前两种类型的 cookie需要经过客户端验证而不会被服务器拒绝验证失败的结果。

6.auth:元组, 支持HTTP认证功能

字典类型用于将文件传输至服务器。如fs={{'file': open(r'data.xls', rb)}}; r=request.request(r'POST', r'url', files=fs)

8.timeout: 配置的超时时间,默认按秒计算,在指定时间内未返回将触发TimeOut异常;通过try捕获该异常。

在这里插入图片描述

proxies: 字典数据类型,在Python中用于配置代理服务器设置(在计算机IP被封的情况下可采用此方法进行绕过)
如pxs = {
'http': 'http://user:pass@10.10.10.1:1234',
'https': 'https://10.1wwwqwqe0.10.1:4321'
}
r = request.request('GET', url, proxies=pxs)
通过这种方式可有效避免网络位置被逆向追踪

  1. allow_redirects字段的值是布尔类型选项,默认设为可重定向(即allow_redirects设为True)。请确保将重 toward status code设置在3xx范围内

11.stream:True/False,默认为True,是否用数据流传输数据(大文件)

12.verify 选项设置为 True/False,默认开启,并用于指定认证类型(如 CA 证书或 SSL 证书)。访问未配置数字签名的网站时,系统将引导用户查看详细信息。

在这里插入图片描述

直接爬取,requests模块在发送请求时会默认验证证书,会报错SSLError

在这里插入图片描述

当设置verify为False时,在使用requests模块发送请求时会跳过证书验证步骤

-=

13.cert:本地SSL证书路径

七、requests.post()方法
r=requests.post(‘URL’,data=payload)
print(r.text)
如果向URL位置POST一个字典,自动编码到form(表单)字段下。
如{


‘form’:{
‘key1’:‘value1’
‘key2’:‘value2’

向URL位置POST一个字符串,自动编码到data字段下
‘data’:字符串
form:{}

八、requests.put()方法
PUT与POST类似,区别在于能把原有资源覆盖

九、各种请求方式区别
GET:请求获取URL位置的资源
HEAD:请求获取URL位置资源的响应信息报告,即头部信息
POST:请求向URL位置的资源后附加新的数据
PUT:请求向URL位置存储一个资源,覆盖位置原资源
PATCH:请求局部更新URL位置的资源,改变该处资源部分内容
DELETE:删除URL位置存储的资源
PUT和PATCH区别:假设URL数据位置有一组数据UserInfo,包括UserName,UserID等20个字段采用PATCH,仅向URL提交UserName的局部更新请求,采用PUT,必须将20个字段一并提交,未提交字段将被删除。

request.retrieve(url, parameters=None, **kwargs)
其中 **kwargs 是限定访问的参数之一(不包括 parameters),一共有 12 个。

request.head(url,**kwargs)

request.post(url,data=None,json=None,**kwargs)

request.put(url,data=None,**kwargs)

request.patch(url,data=None,**kwargs)

request.delete(url,**kwargs)

全部评论 (0)

还没有任何评论哟~