requests概述
前面的课程中我们了解了requests模块是一个网络请求模块,可以帮助我们模拟成客户端去请求服
务器的数据。我们今天就是主要针对这个模块进行学习。
我们可以在浏览器中抓取到这些请求与响应的内容,那么我们可以“伪造”请求吗?也就是不再通过
浏览器发送这些数据,而是通过Python来模拟浏览器发送请求。答案是可行的。而Requests模块就可
以完成这种功能。
Requests 模块就是 Python 实现的简单易用的 HTTP库
还有其他库吗? 回答也是肯定的,例如 urllib , urllib2 等模块。但是目前来说 Requests 模块是最流行的。而且也是做好用的模块。利用pip 可以非常方便的安装:
pip install requests
请求方法(Method)
HTTP请求可以使用多种请求方法,但是爬虫最主要就两种方法:GET和POST方法。
- get 请求:一般情况下,只从服务器获取数据下来,并不会对服务器资源产生任何影响的时候会 使用 get 请求。
- post请求:向服务器发送数据(登录)、上传文件等,会对服务器资源产生影响的时候会使用post 请求。
以上是在网站开发中常用的两种方法。并且一般情况下都会遵循使用的原则。但是有的网站和服务器
为了做反爬虫机制,也经常会不按常理出牌,有可能一个应该使用get 方法的请求就一定要改 成post 请求,这个要视情况而定。
GET与POST方法的区别:
- GET是从服务器上获取数据,POST是向服务器传送数据
- GET请求参数都显示在浏览器网址上,即“Get”请求的参数是URL的一部分。 例如: http://www.b
aidu.com/s?wd=Chinese - POST请求参数在请求体当中,消息长度没有限制而且以隐式的方式进行发送,通常用来向HTTP服务器提交量比较大的数据。请求的参数类型包含在“Content-Type”消息头里,指明发送请求时要提交的数据格式。
注意:
网站制作者一般不会使用Get方式提交表单,因为有可能会导致安全问题。 比如说在登陆表单中用
Get方式,用户输入的用户名和密码将在地址栏中暴露无遗。并且浏览器会记录历史信息,导致账号不安全的因素存在。
requests模块请求关键字
通过前面我们使用用requests模块已经知道,requests模块在发送网络请求的时候可以传递一些关
键字参数,如下图我们写过的案例所示:
那么除了这两个关键字参数,requests模块在发送网络请求的时候还有哪些关键字参数呢?接下来我们通过查看源码的方式,介绍requests模块发送请求常用的关键字参数。如下所示:
“”"
method: 请求方法 get post
url: 请求网址
params: (可选的) 查询参数
headers: (可选的) 字典 请求头
cookies: (可选的) 字典.cookiejar对象, 用户身份信息
proxies: (可选的) ip代理
data: (可选的) 字典.列表.元组.bytes post请求时会用到
json: (可选的) 字典 提交参数
verify: (可选的) 是否验证证书, ca证书
timeout: (可选的) 设置响应时间,一旦超过,程序会报错
allow_redirects: (可选的) 是否允许重定向, 布尔类型数据
files: (可选的) 字典,文件
auth: (可选的) 字典,权限认证
stream: (可选的) 是否是数据流传输
“”"
提示:以上关键字参数排列顺序根据使用的频率进行排列。