本文共 3019 字,大约阅读时间需要 10 分钟。
requests模块是一个第三方模块,用于在python环境中发送HTTP请求。与内置的urllib模块相比,requests模块更加简洁易用。以下是该模块的主要功能:
import requestsurl = 'https://www.baidu.com'response = requests.get(url)response.status_coderesponse.urlresponse.apparent_encodingresponse.text 或 response.content.decode()requests模块提供多种请求方法,主要包括:
headers:请求头cookies:请求cookietimeout:设置响应超时时间verify:是否验证证书每次请求都会返回一个response对象,包含以下信息:
str,自动解码响应内容,根据HTTP头部推测编码。bytes,未指定编码。通过指定编码可以解决中文乱码问题:
response.content.decode() # 默认utf--8response.content.decode('gbk') # 指定编码 GET请求用于从服务器获取数据,常见格式如下:
response = requests.get(url, params, args)
url:目标URLparams:GET请求参数args:其他请求属性(如cookie、headers等)url = 'https://www.baidu.com'response = requests.get(url)
url = 'https://www.baidu.com/?p1=python&p2=java'response = requests.get(url)
url = 'https://www.baidu.com'url_params = {'p1': 'python', 'p2': None, 'p3': 'java'}response = requests.get(url, url_params) POST请求用于向服务器提交数据,常见格式如下:
response = requests.post(url, data={}, json={}, args) url:目标URLdata:提交的字典、元组列表、文件或字节对象json:提交的JSON对象args:其他请求属性(如cookie、headers等)url = 'https://www.baidu.com'payload = {'key1': 'value1', 'key2': None, 'key3': 'value3'}response = requests.post(url, data=payload) url = 'https://www.baidu.com'payload = {"key1": "value1", "key2": None, "key3": 33}headers = {'content-type': 'application/json'}response = requests.post(url, json=payload, headers=headers) url = 'https://www.baidu.com'payload = {"key1": "value1", "key2": None, "key3": 33}headers = {'content-type': 'application/json'}cookies = {'testCookies_1': 'Hello_Python3', 'testCookies_2': 'Hello_Java'}response = requests.post(url, json=payload, headers=headers, cookies=cookies, timeout=5) requests模块中的Session类可以自动管理cookie,实现状态保持。其主要作用包括:
import requestsheaders = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.87 Safari/537.36', 'content-type': 'application/json'}cookies = { 'testCookies_1': 'Hello_Python3', 'testCookies_2': 'Hello_Java'}data = { 'authenticity_token': 'authenticity_token', 'login': input('输入账号:'), 'password': input('输入密码:')}session = requests.session()# 请求1response1 = session.post('https://blog.csdn.net', data=data, headers=headers, cookies=cookies)print("==========session.post===========")print(response1.url)print(response1.request.body)print(response1.request.headers)print(response1.request._cookies)print(response1.cookies)# 请求2response2 = session.get('https://blog.csdn.net', headers=headers)print("==========session.get===========")print(response2.url)print(response2.request.body)print(response2.request.headers)print(response2.request._cookies)