老嘤学习笔记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)
通过这种方式可有效避免网络位置被逆向追踪
- 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)
