requests是用于发送HTTP请求
常用的方法
import requests # 导入模块
url = "https://www.baidu.com/robots.txt"
header = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/119.0"
}
proxies = {
"http://127.0.0.1:8080"
"https://127.0.0.1:8080"
}
response = requests.get(url,headers=header,proxies=proxies) # 发送GET请求,并获取响应对象,并定制 header 和 proxy
print(response.status_code) # 获取响应状态码
print(response.text) # 以字符串的形式获取响应内容,适用于获取网站的文本信息
print(response.content) # 以字节的方式获取响应内容,适用于保存二进制数据的场景,如 图片、音视频等
print(response.url) # 获取请求的URL
print(response.headers) # 获取的 header
print(response.headers.get("Set-Cookie")) # 获取响应的 Set-Cookie
response2 = requests.get(url,timeout=1) # 设置超时时间为1秒
data = {'key1': 'value1', 'key2': 'value2'} # 请求携带的数据
response3 = requsets.post(url,data=data) # 发起POST请求,并获取响应对象
response4 = requsets.get(url,data=data) # 发起携带参数的GET请求
file = {
"file": open('filepath.txt','rb') # 要上传的文件路径
}
response5 = requsets.post(url,file=file) # 上传文件
会话保持
在上面的示例中,每一次请求都是单独发起的,相当于每次都是第一次发起请求,如果要保持请求就需要用到SESSION会话
import requsets
url = "https://www.baidu.com/robots.txt"
session = requsets.Session()
response = session.get(url)
SSL 证书验证
Requests 可以为 HTTPS 请求验证 SSL 证书。SSL 验证默认开启的,如果证书验证失败,Requests 会抛出 SSLError
requests.exceptions.SSLError: HTTPSConnectionPool(host=‘www.12306.cn’, port=443): Max retries exceeded with url: / (Caused by SSLError(SSLError(“bad handshake: Error([(‘SSL routines’, ‘tls_process_server_certificate’, ‘certificate verify failed’)],)”,),))
import requests
from requests.packages import urllib3
urllib3.disable_warnings() #从urllib3中消除警告
response = requests.get('https://www.12306.cn',verify=False) #证书验证设为FALSE
print(response.status_code)