文章目录
前言
- 今天是2020年2月17日,我们生活在信息时代,很多时候需要用到大量的数据,在互联网上即时刻保存着、更新着许多的数据,我们的很多数据都可以从互联网上获得,想要得到互联网上数据你可以选择人工寻找记录的方法,但是这种方法效率非常低下,这个时候爬虫便展现出了它的优势。
- 对Python来讲,可能很多人都是通过爬虫认识的这门语言,当然Python远不止可以做爬虫,但它在爬虫这方面确实很有优势,它优秀的第三方库以及一些爬虫框架让人们用Python
养
一只爬虫变得非常简单。今天我便来记录一个非常优秀的爬虫第三方库:requests
。
1. Requests库简单介绍
- 在Ruquests库的官方文档中写道:Requests库是一个针对Python的优雅而简单的HTTP库,是为人类而构建的,它是目前公认的爬取网页最好的第三方库,它让你能用一行代码就能从网页上获得信息,让入门变得非常容易。
2. Requests库的安装
首先用管理员权限打开cmd
命令行,然后直接输入
pip install requests
,即可安装成功(需要联网)
3. Requests库的主要方法
- 在ruquests库中主要有七个主要方法,如下:
方法 | 作用 |
---|---|
requests.request() | 构造一个请求,它是支撑以下方法的基础方法 |
requests.get() | 获取HTML网页的主要方法,请求获取URL位置的资源 |
requests.head() | 获取HTML网页头信息的方法,请求获取URL位置资源的响应信息报告,即获得该资源的头部信息 |
requests.post() | 向HTML网页提交POST请求的方法,请求向URL位置的资源后附加新的数据 |
requests.put() | 向HTML网页提交PUT请求的方法,请求向URL位置存储一个资源,覆盖原URL位置的资源 |
request.patch() | 向HTML网页提交局部修改请求,请求局部更新URL位置的资源,即改变该处资源的部分内容 |
request.delete() | 向HTML网页提交删除请求,请求删除URL位置存储的资源 |
3.1 最常用方法-get()
上表中的几个方法是requests库中最主要的几个方法,而最长用的莫过于get()
方法了,它用来构造一个向服务器请求资源的对象Requests,然后返回一个包含服务器资源的Response对象,这个Response对象包含服务器返回的所有信息,get()
方法是我们用来获取想要得到的网页信息的基础,它的函数形式如下:
requests.get(url,params=None,**kwargs)
- url : 想要获取网页页面的url链接。
- params : url中的额外参数,字典或字节流格式,可选。
- **kwargs : 12个控制访问的参数。
值得一提的是,get()
方法和其余的几个主要方法都是通过request()
方法封装的,这6个方法存在的意义即使让大家编写程序的时候更加方便而已。
3.2 Response对象的常用属性
属性 | 说明 |
---|---|
status_code | HTTP请求的返回状态,200代表成功 |
text | HTTP响应的字符串形式,即url对应的页面内容 |
encoding | 当前使用的解码方式,默认从HTTP header中猜测的响应内容编码方式 |
apparent_encoding | 从内容中分析出的响应内容编码方式 |
content | HTTP响应内容的二进制形式 |
raise_for_status() | 判断服务器响应状态,如果不是200,则产生异常 |
3.3 Requests库主要方法解析
- 在Requests库中有七个主要方法,其中
request()
方法是其它方法的基础,它们之中的参数几乎相同,下面以request()
方法来介绍一个其中各个参数的相关功能。
标准形式 :
requests.request(method,url,**kwargs)
注:
**kwargs
的十几个相关参数在下文列举
参数名称 | 作用 |
---|---|
method | get() 、post() 等几种请求方式 |
url | 将要访问的网络页面链接 |
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 | Ture/False,默认为True,认证SSL证书开关 |
cert | 本地SSL证书路径 |
- 以上各个参数除url外均为可选参数,初级阶段用的比较多的有
params
、headers
、timeout
、等等,其余的大多为高级参数,刚开始用的比较少。
另外几种请求方式中的参数几乎都与request函数参数相同,掌握各个参数作用之后要掌握好各主要方法的作用。
3.4.1 参数使用示例
>>> import requests
#params参数
>>> kv = {'C':'CHANG','K':'KANG','N':'NING'}
>>> response = requests.request('GET','https://www.baidu.com/',params=kv)
>>> print(response.url)
https://www.baidu.com/?C=CHANG&K=KANG&N=NING
#data参数
>>> kv = {'C':'CHANG','K':'KANG','N':'NING'}
>>> response = requests.request('POST','https://www.baidu.com/',data=kv)
>>> name = 'changkangning'
>>> response = requests.request('POST','https://www.baidu.com/',data=name)
#json参数
>>> kv = {'C':'CHANG','K':'KANG','N':'NING'}
>>> response = requests.request('POST','https://www.baidu.com/',json=kv)
#headers参数
>>> headers = {'user-agent':'Chrome/10'}
>>> response = requests.request('POST','https://www.baidu.com/',headers=headers)
#files参数
>>> files = {'file':open('0218.text','rb')}
>>> response = requests.request('POST','https://www.baidu.com/',files=files)
#proxies参数
>>> proxies = {'http':'http://user:[email protected]:1234'
'https':'https://10.10.10.1:4321'}
>>> response = requests.request('GET','https://www.baidu.com/',proxies=proxies)
- 以上简单列举了几个参数的使用方法,具体怎么掌握,会得到什么样的结果,还需要自己多练习实验一下。