MENU

【日常Py】Requests模块基本方法记录

November 2, 2018 • Read: 1005 • 技术杂谈

这个模块经常使用,但有些方法还是经常忘记,决定记录一下常用属性,方便以后自己再次翻阅,该文章会长期更新。
最后更新时间:2018-11-02

requests-sidebar.png

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)                #返回二进制内容