这个模块经常使用,但有些方法还是经常忘记,决定记录一下常用属性,方便以后自己再次翻阅,该文章会长期更新。
最后更新时间:2018-11-02
Requests 简单介绍
requests是一个很实用的Python HTTP客户端库,编写爬虫和测试服务器响应数据时经常会用到。可以说,Requests完全满足如今网络的需求,对我这种经常搞网站的人来讲,是非常喜欢这个模块的。
中文官网地址:http://docs.python-requests.org/zh_CN/latest/user/quickstart.html
安装方法:
pip install requests
其它什么的就不在阐述,百度吧。
使用方法:
import requests
直接导入该模块即可正常使用,如果上面代码运行出错,可能没有正常安装。
最简单的使用例子:
# -*- coding: utf-8 -*-
import requests
url='https://www.baidu.com/' #请求地址
res=requests.get(url) #Get方式请求
res.encoding='utf-8' #设置网页编码
print(res.text) #字符形式输出网页内容
常用属性方法记录:
1.Get请求:
res=requests.get('https://qzone.work/') #Get方式请求
2.Post请求
PostData={'key':'value'} #字典形式,可多传
res=requests.post('https://qzone.work/',data=PostData) #Post方式请求
3.设置Header
headers={'Referer':'https://qzone.work'} #字典形式,Key:Value 分别对应,可多传
res=requests.post('https://qzone.work/',headers=headers) #Post方式请求
4.设置Cookie
Cookies={'key':'value'} #字典形式,可多传
res=requests.post('https://qzone.work/',Cookies=Cookies) #Post方式请求
5.设置超时
res=requests.get('https://qzone.work/',timeout=1) #Get方式请求,连接超时时间1秒
res=requests.get('https://qzone.work/',timeout=None) #Get方式请求,永久等待
注意:timeout 仅对连接过程有效,与响应体的下载无关。 timeout 并不是整个下载响应的时间限制,而是如果服务器在 timeout 秒内没有应答,将会引发一个异常(更精确地说,是在 timeout 秒内没有从基础套接字上接收到任何字节的数据时)If no timeout is specified explicitly, requests do not time out.
res=requests.get('https://qzone.work/',timeout=(3, 27)) #Get方式请求,连接超时时间3秒,等待响应超时时间 27秒。
连接超时指的是在你的客户端实现到远端机器端口的连接时(对应的是connect()
_),Request 会等待的秒数。一个很好的实践方法是把连接超时设为比 3 的倍数略大的一个数值,因为 TCP 数据包重传窗口 (TCP packet retransmission window) 的默认大小是 3。
一旦你的客户端连接到了服务器并且发送了 HTTP 请求,读取超时指的就是客户端等待服务器发送请求的时间。(特定地,它指的是客户端要等待服务器发送字节之间的时间。在 99.9% 的情况下这指的是服务器发送第一个字节之前的时间)。
6.禁止重定向
res=requests.get('https://qzone.work/',allow_redirects=False) #Get方式请求,禁止重定向,防止跳转。
7.设置内容编码
res=requests.get('https://qzone.work/') #Get方式请求
res.encoding='utf-8' #设置网页编码为utf-8,一般来讲都是UTF-8,解决乱码问题。
8.获取响应Header
res=requests.get('https://qzone.work/') #Get方式请求
print(res.headers) #返回字典形式Header
9.获取响应状态码
res=requests.get('https://qzone.work/') #Get方式请求
print(res.status_code) #返回int 状态码,正常200,内置正常状态码 requests.codes.ok
10.获取响应Cookie
res=requests.get('https://qzone.work/') #Get方式请求
print(res.cookies) #返回字典形式Cookie
11.Post上传文件
import requests
url = 'http://httpbin.org/post' #上传地址
files = {'file': open('report.xls', 'rb')} #以二进制流读取文件
r = requests.post(url, files=files) #POST上传
12.字符形式输入内容
res=requests.get('https://qzone.work/') #Get方式请求
print(res.text) #返回字符内容
13.二进制流输出内容
res=requests.get('https://qzone.work/') #Get方式请求
print(res.content) #返回二进制内容