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

一、requests库作用
二、requests.get()参数设置
三、response的属性
四、requests库的异常
五、requests.head
六、requests.requests()方法
七、requests.post()方法
八、requests.put()方法
九、各种请求方式区别

一、requests库作用
模拟浏览器发请求
2.如何使用:
指定url(并分析网页性质:静态\动态)
发起请求
获取响应数据
数据解析(解析想要的数据(正则表达式\css选择器\xpath节点提取))
持久化存储(保存在本地\保存在数据库(redis\mongodb\mysql))
3.环境安装:
pip install requests

如何判断数据是静态还是动态:
静态数据:查看网页源代码,搜索想要的数据
网页源代码中的数据都是静态数据,用ctrl+f调出搜索框,搜索想要的数据,搜到了就代码想要的数据是静态页面的数据
对于静态数据,可以以地址导航栏的url地址作为请求连接
老嘤学习笔记python——初识requests库_第1张图片

动态数据:如果在源代码页面没搜到想要的数据,就需要抓包
老嘤学习笔记python——初识requests库_第2张图片
打开浏览器开发者工具,进行抓包,(静态数据也可以抓包)

二、requests.get()参数设置
request.get(url,params=None,**kwargs)
url:链接
params:url中的额外参数,字典或字节流格式,可选
**kwargs:12个控制访问的参数

三、response的属性
request有两个对象,一个是请求资源对象Request,一个是包含服务器资源对象Response
这里用r代指Response
response.status_code:状态码
response.text:响应内容的字符串形式
response.encoding:从header中猜测的响应内容编码方式(从header中的charset中获得,如果不存在则认为编码为ISO-8859-1)
response.apparent_encoding:从内容中分析出的响应内容编码方式(备选编码方式)
可以用r.encoding=r.apparent_encoding改变编码方式
response.content:响应内容的二进制形式
response.request:请求内容
老嘤学习笔记python——初识requests库_第3张图片

四、requests库的异常
requests.ConnectionError:网络连接异常,如DNS查询失败
requests.HTTPError:HTTP错误
reqquests.URLRequired:URL缺失
requests.TooManyRedirects:超过最大重定向次数
requests.ConnectTimeout:连接服务器超时
requests.Timeout:发起到获得URL超时

r.raise_for_status():如果状态码不是200,产生requests.HTTPError
爬取页面信息基本框架:
import requests
url=‘url’
try:
r=requests.get(‘url’)
r.raise_for_status()
r.encoding = r.apparent_encoding
print(r.text[:1000])
except:
print(‘爬取失败’)

五、requests.head
requests.head(url):获取头部信息,用此方法请求后,可用r.headers打印头部信息,r.text此时为空。

六、requests.requests()方法
requests.request(method,url,**kwargs)
method:请求方法
即HTTP的请求方法: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中加不加?,最终得到的地址都只会有一个?
老嘤学习笔记python——初识requests库_第4张图片

****2.data:url的请求参数
字典、字节序列或文件对象,作为Request的内容
payload = {‘key1’:‘value1’,‘key2:value2’}

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

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

****5.cookies:字典或CookieJar,Request中的Cookie
有服务器设置的cookies(请求与响应获取cookies值)
js加载的cookies(js解密获取)
浏览器生成的cookies(服务器不会校验字段)

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

7.files:字典类型,向服务器传输文件
如fs={‘file’:open(‘data.xls’,‘rb’)
r=request.request(‘POST’,‘url’,files=fs)

****8.timeout:设定的超时时间,以秒为单位,设定时间内未返回产生TimeOut异常
用try捕捉异常
老嘤学习笔记python——初识requests库_第5张图片

****9.proxies:字典类型,设定访问代理服务器,增加登陆认证(计算机ip被封情况下可以挂代理)
如pxs = {‘http’:‘http://user:[email protected]:1234’
‘https’:‘https://10.1wwqwqe0.10.1:4321’}
r=request.request(‘GET’,‘url’,proxies=pxs)
有效隐藏用户IP地址信息,防止爬虫的逆追踪

****10.allow_redirects:True/False,默认为True(允许),是否允许重定向,重定向状态码300左右

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

****12.verify:True/False,默认为True,是否认证证书(ca证书,ssl证书)
进入没有购买证书的网站时,会显示如下界面
老嘤学习笔记python——初识requests库_第6张图片

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

老嘤学习笔记python——初识requests库_第7张图片
verify=False 使用requests模块发送请求时,不验证证书(默认verify=True)验证
老嘤学习笔记python——初识requests库_第8张图片

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.get(url,params=None,**kwargs)
**kwargs:12个控制访问的参数(除了params)

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)

你可能感兴趣的:(python)