1、GET请求
# requests GET请求
import requests
# 第一种
url = 'https://www.sogou.com/web?query=python'
rep = requests.get(url)
print(rep) # 输出 <Response [200]>
# 第二种
url1 = 'https://www.sogou.com/web'
params = {'query': 'python'}
rep1 = requests.get(url1, params)
print(rep1) # 输出 <Response [200]>
print(rep1.status_code) # 返回响应码
print(rep1.url) # 输出请求连接
print(rep1.raw.read()) # 输出原始相应体,一般不用
print(rep1.content.decode()) # 字节方式的相应体,需要解码
print(rep1.text) # 字符串方式的响应体,会自动解码
print(rep1.headers) # 以字典的格式返回相应头部
print(rep1.json()) # Requests自带的json解码器 返回的是json数据时使用
print(rep1.raise_for_status()) # 请求失败时的响应码
print(rep1.cookies.items()) # 返回cookie字典
print(rep1.encoding) # 返回编码方式
2、POST请求
# requests POST请求
import requests
import json
# POST请求的url同get请求,参数有一下几种
# 1、字典类型
data0 = {"k1": "v1", 'k2': 'v2', 'k3': 'v3'}
# 2、元组或者列表
data1 = (('k1', 'v1'), ('k2', 'v2'))
# 3、Json类型
data2 = {"k1": "v1", 'k2': 'v2', 'k3': 'v3'}
data3 = json.dumps(data2)
response0 = requests.post("https://www.baidu.com/", data=data3)
print(response0.text) # 返回HTML源码 str类型
print(type(response0.text))
# requests的POST还有其他参数可以输入
# requests的POST还有其他参数可以输入
# requests的POST还有其他参数可以输入
# 1、增加头部 headers、 使用代理IP、证书验证、超时设置、cookie
# 增加头部
headers = {
'Content-type': 'application/json',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64;'
' x64) AppleWebKit/537.36 (KHTML, like'
' Gecko) Chrome/89.0.4389.90 Safari/537.36',
'Cookie': 'JSESSIONID=123456789;name=value' ## 这里也可以设置cookie
}
response1 = requests.post("https://www.baidu.com/", data=data3, headers=headers)
# 使用代理
proxies = {
'http': 'http://10.10.11.1:2342',
'https': 'https://10.12.11.2:2345'
}
response2 = requests.post("https://www.baidu.com/", data=data3, headers=headers, proxies=proxies)
# 证书验证
# 1、不验证:verify=False 2、验证 verify=True 3、设置证书路径 verify='/path/certfile'
response3 = requests.post("https://www.baidu.com/", verify=False)
# 超时设置 timeout=0.01 单位 s
response4 = requests.post("https://www.baidu.com/", timeout=0.01)
3、两种格式的cookie
# requests 设置Cookie
import requests
from requests import utils
# requests 中加Cookie参数,参数类型为字典或者RequestsCookieJar
# 字典形式
url = "https://wwww.baidu.caom/"
temp_cookie = 'JSESSIONID=hahfdlfhlcdnkjfl;name=value'
cookies_dict = {}
for i in temp_cookie.split(';'):
v = i.split("=")
cookies_dict[v[0]] = v[1]
resp0 = requests.get(url, cookies=cookies_dict)
print(resp0.text)
# RequestsCookieJar形式
# 1、获取RequestsCookieJar对象
cookies_jar = resp0.cookies
# 2、转换为字典
cookiesDict_from_jar = requests.utils.dict_from_cookiejar(cookies_jar)
# 3、字典转RequestsCookieJar对象
cookiejar_from_dict = requests.utils.cookiejar_from_dict(cookies_dict, cookiejar=None, overwrite=True)
# 4、在RequestsCookieJar对象中添加字典
cookiejar_add_cookieDict = requests.utils.add_dict_to_cookiejar(cookies_jar, cookies_dict)
# 将cookie写入文件
myCookie = resp0.cookies
cookies_dict1 = requests.utils.dict_from_cookiejar(myCookie)
# 将cookie写入文件
f1 = open('cookie_dict.txt', 'w', encoding='utf-8')
f1.write(str(cookies_dict))
f1.close()
# 从文件读cookie
f2 = open('cookie_dict.txt', 'r')
dict_value = f2.read()
f2.close()
cookie = eval(dict_value) # 转换为字典eval函数可以将字典、列表、元组格式的字符串直接转换为对应的数据类型
resp1 = requests.get(url, cookie)
print(resp1.text)