引言
今天开始学习python中的request库进而开始学习数据爬取数据(爬虫),俗话说的好:~ 爬虫学的好,坐牢做到老 ~ 。出于兴趣我开始阅读官方文档深入了解一下这些库。作者无法将一个库讲的十分全面,这篇文章先对get请求进行介绍。如有疏漏 ,请多多包涵。官方库传送门
先介绍对不同网站请求(8种)。这里只介绍四种,其余四种感兴趣的读者可以点击传送门进行查阅。
- GET:从网站取回数据(read)
- POST:创建一个实体通常用来上传文件(write)
- Put:向指定资源位置上传最新的内容(update)
- Delete:请求服务器删除request-url所标识的资源(delete)
建立实例
r=requests.get('https://www.baidu.com')
#下面介绍requests.get()中的参数
r=requests.get(url,params=None,**kwargs)
返回的是个response对象url:
定义 :在网络中的每一信息资源都有统一和在网络中的中的地址
格式:protocol://hostname[:port]/path/ [;parameters][?query]#fragment([]中的内容可有可无)
protocol :协议——制定在网络中传输的协议最常用的是HTTP协议
hostname[:port]:存放资源的服务器的域名系统(DNS),主机名或者ip地址
- :port:端口号每个协议有他默认的端口号,但由于种种原因,我们可以在服务器中重新定义端口号
path:由零或多个‘/’分开开的字符串来表示资源在服务器的位置
parameters:参数-用于指定参数查询
query:查询-用于动态网络查询,查询条件用’&’隔开,查询的名与值用’=’连接
fragment:信息片段-用于指定网络中的信息片段
params:可选参数-字典,元组列表或者字节型数据(Dictionary, list of tuples or bytes to send)来插入query充当查询条件
**kwargs:12个控制访问的参数
定制请求头
>>> headers={
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36'
}
>>> url = 'https://api.github.com/some/endpoint'
>>> html=requests.get(url=url,headers=headers)
- 应用场景:在在很多网站中,会对请求头中的信息有所要求,或者是因为用作验证来反爬虫,或者是获得浏览器的信息以提供针对性的反馈等等,当缺少这些请求头信息时,有些网站可能会对请求不予反馈,或者返回错误信息。这就需要在通过代码访问的时候追加这些信息
实例的属性
response=requests.get('https://www.baidu.com')
##实例的属性
response.status_code #获取状态码
response.url #获取真实的url
response.headers #获取头部信息
response.content #以字节返回信息。一般用来存贮图片
response.text #以一定编码形式返回信息
状态码
200:请求成功
301/302;重定向
403:禁止访问
404:找不到资源
405:请求方式不对(get/post)
500:服务器问题
502:bad getway 网关错误.text 与.content区别
当我们使用response=requests.get('https://www.baidu.com')得到是一个response对象,里面包涵了从服务器中的获得所有信息包括响应头等等。response.content是以字节形式来显示。response.text 是根据对原始数据的猜测即响应头中的编码方式来对response.content来进行编码来返回字符串。但有时会发生错误,这是就得指定编码方式历来编码response.content(response.content.decode('编码方式'))。