Python标准库中提供了:urllib、urllib2、httplib等模块以供Http请求,但是,它的 API 太渣了。它是为另一个时代、另一个互联网所创建的。它需要巨量的工作,甚至包括各种方法覆盖,来完成最简单的任务。
Requests 是使用 Apache2 Licensed 许可证的 基于Python开发的HTTP 库,其在Python内置模块的基础上进行了高度的封装,从而使得Pythoner进行网络请求时,变得美好了许多,使用Requests可以轻而易举的完成浏览器可有的任何操作。
1、安装:
pip install requests
2、requests常用属性:
response = requests.get(url)
response.text
response.content
response.encoding
response.apparent_encoding
response.status_code
301 永久重定向
302 临时重定向
response.cookies.get_dict()
3、requests库的七种方法:
4、支撑所有方法的基础方法:
requests.request(method,url,**kwargs):
method: GET,HEAD,POST,PUT,PATCH.DELETE,OPTIONS
url:数据资源链接
**kwargs:控制访问参数,(为可选项)
params : 字典或字节序列,作为参数增加到url中
data : 字典、字节序列或文件对象,作为Request的内容
json : JSON格式的数据,作为Request的内容
headers : 字典,HTTP定制头
cookies : 字典或CookieJar,Request中的auth : 元组支持HTTP认证功能
files : 字典类型,传输文件
timeout : 设定超时时间,秒为单位
proxies : 字典类型,设定访问代理服务器,可以增加登录认证
allow_redirects : True/False,默认为True,重定向开关
stream : True/False,默认为True,获取内容立即下载开关
verify : True/False,默认为True,认证SSL证书开关
cert : 本地SSL证书
auth : 元组,支持HTTP认证功能
5、返回对象:Responsen属性
response.text 为字符串,通常需要做解码,一般为:'utf-8' 或 'gbk'
response.content 为字节型,直接转码与上面一样,建议使用 :response.content.decode('utf-8')
6、Requests库的异常
7、Requests的Get函数下载大文件
使用Requests下载大文件
当使用Requests的Get下载大文件时,建议使用Stream模式。
当把get()函数的stream设置为False,则为立即下载并放到内存中,由于文件太大容易出现内存消耗怠尽和溢出问题。
当把get()函数的stream设置为True,则不会直接下载,需要调用:iter_content或iter_lines来遍历内容或访问内容属性时才开始下载**(需要注意:文件没有下载之前,它仍需要保持连接)**
iter_content:一块一块的遍历要下载的内容
iter_lines:一行一行的遍历要下载的内容
使用上面两个函数下载大文件可以防止占用过多的内存,因为每次只下载小部分数据
# 使用Requests下载大文件
response = requests.get("file_url_path",stream = True)
f = open("file_path","wb")
# chunk是指定每次写入的大小,每次只写入512 byte
for chunk in response.iter_content(chunk=512):
if chunk:
f.write(chunk)
8、关于会话(Session)及Cookie
先发送post请求,获取cookie,带上cookie请求登陆后的页面 —requests.session() 会话保持
- 1.实例化session
- session=requests.session()#此时session实例同requests一样
- 2.session.post(url,data,headers)#服务器设置在本地的cookie会被保存在被session中
直接携带cookie请求url地址
- 1.cookie放在headers中
- 2.cookie字典传给cookies参数
- cookie=”….”#通过字典推导式得到
- cookie_dict={i.split(“=”)[0]: i.split(“=”)[1] for i in cookie.split(“;”)}
- requests.get(url,headers=headers,cookies=cookie_dict)
特别说明:关于每个功能测试和学习最好的例子是:
Python爬虫:requests库基本使用_彭世瑜的博客-CSDN博客_使用requests库
Requests 爬取到:requests InsecureRequestWarning: Unverified HTTPS request is being made. (请求不安全请求警告:正在执行未经验证的HTTPS请求。)的解决办法
在文件顶部加上以下语句就不报错了
import urllib3
urllib3.disable_warnings()
#加上此句后就解决了 爬取Https时提示信息的问题。
最后:
由于是学习笔记,参考了以下网站的整理,如有侵权部门,提示则删除。
python爬虫入门requests模块_彭世瑜的博客-CSDN博客
python爬虫之Requests库入门_嘿,该醒醒了的博客-CSDN博客
https://my.oschina.net/u/4382053/blog/3247873
理工男(作者)自己的公众号:
一个理工男的成长之路,如果你是理工男,带你“不正经”;如果你想了解理工男,带你认识理工男,他们是生活百事通,他们的生活简约而不简单。
不正经的原则:合规合法,信息保真能看懂,字越少事越大,学到真东西享受真实惠,有兴趣加入我一起“不正经”。