1.request库的安装
-用管理员权限启动command控制台
- pip install requests
安装成功
2.request库的简介
3.request库的使用
import requests
r = requests.get("http://www.baidu.com")#以访问百度主页为例
r.status_code#查看状态码,返回为200表示正常
#200
r.encoding='utf-8'#更改编码
r.text#打印网页内容
image.png
要理解requests库的方法,要先理解HTTP协议。
HTTP, Hypertext Transfer Protocol超文本传输协议
HTTP是一种基于“请求与响应”模式的、无状态的应用层协议
HTTP协议采用URL作为定位网络资源的标识。
URL格式:http://host[:port][path]
host: 合法的Internet主机域名或IP地址
port: 端口号,缺省端口为80
path: 请求资源的路径
HTTP协议对资源的操作
PUT 方法 vs PATCH方法:
image.png
image.png
3.1 requests.request(method, url, **kwargs )
method: 请求方式,对应get/put/post等7种
**kwargs:控制访问的参数,共13个,均为可选项
method种类
**kwargs:
-
params:字典或字节序列,作为参数增加到url中,即加到url末尾
image.png -
data:字典、字节序列、或文件对象,作为Request的内容,即向url链接的位置中传输数据
image.png - json:JSON 格式的数据,作为Request的内容,和data类似
-
headers:字典,HTTP定制头,用于模拟访问url链接时的http头
即服务器为认为用户是一chrome10浏览器进行访问的 - cookies:字典或cookies,Requests中的cookie
- auth:元组,支持HTTP认证功能
-
files:字典类型,传输文件
image.png - timeout:设定超时时间,以秒为时间
- proxies:字典类型,设定访问代理服务器,可以增加登录认证,可以隐藏用户原的IP
- allow_redirects:True/False, 默认为True,重定向开关
- stream: True/False, 默认为True, 获取内容立即下载开关
- verify: True/False, 默认为True, 认证SSL证书开关
- cert: 保存本地SSL证书路径
3.2 requests.get(url, params=None, **kwargs)方法,最常用
r=requests.get(url)
requests.get(url)构造一个Request对象
r是返回的一个包含服务器资源的Response对象requests.get(url, params=None, **kwargs)
url:拟获取页面的url链接
params:url中的额外参数,字典或字节流格式,可选
**kwargs:12个控制访问参数,可选
Response对象
>>> import requests
>>>r=requests.get(url)
>>> r
<Response [200]>
>>> type(r)
<class 'requests.models.Response'>
>>> r.headers#headers返回头部信息
{'Cache-Control': 'private, must-revalidate, max-age=0', 'Content-Type': 'text/html; charset=utf-8', 'Content-Encoding': 'gzip', 'Vary': 'Accept-Encoding', 'Server': 'Microsoft-IIS/10.0', 'X-AspNet-Version': '4.0.30319', 'Set-Cookie': 'CallingUrl=http://legacy.tropicos.org/NamePage.aspx?nameid=40033586; path=/', 'X-Powered-By': 'ASP.NET', 'Date': 'Wed, 22 Apr 2020 10:32:02 GMT', 'Content-Length': '21795'}
>>>
示例
Response的几个属性,要牢记,当爬取的内容是图片视频等的时候,要用r.content来保存
一般流程
例子
两种编码属性的比较
理解requests库的异常
6种连接异常
raise_for_status()方法
通用代码框架,使得爬取变得稳定可靠
3.3 requests.head(url, **kwargs)
3.4 requests.post(url, data=None, json=None, **kwargs)
3.5 requests.put(url, data=None, **kwargs)
3.6 requests.patch(url, data=None, **kwargs)
3.7 requests.delete(url, **kwargs)