|
本帖最后由 刘颖 于 2022-6-22 20:06 编辑
一、模拟get请求
import requests
response = requests.get(url="http://47.107.178.45/phpwind/")
response 相当于响应对象(响应头、响应行、响应正文)
print(response.status_code) #获取响应状态码
print(response.reason) #获取响应信息
print(response.headers) #获取所有响应头
print(response.text) #字符串方式获取响应正文
print(response.cookies) #获取cookies信息
二、python如何处理json数据?
在python中,键值对的json数据等同于字典,数组类型的json数据等同于列表
唯一的区别:json数据要使用双引号
json.loads()把一个json字符串转换成 json对象、json.dumps()把一个json对象转换成字符串形式,其中dumps()方法自动把中文转化成unicode编码,添加ensure_ascii为假则不自动转化
三、python预判编码
获取python预判的响应正文编码格式:response.encoding
获取python预判的响应正文编码格式:response.apparent_encoding
python以response.encoding中的值作为响应正文的解码标准,而response.encoding取决于请求头中的Content-Type字段中的charset的值,如果不存在,则python会使用 ISO-8859-1类型去解码中文,导致解码成乱码。response.apparent_encoding根据响应正文的头部<head>中的charset的值进行设置。
解决响应正文乱码的方式:
response.encoding = response.apparent_encoding
四、requests如何设置代理
先定义一个代理的字典,再在get请求中定义proxies
如果有用户名和密码的代理写法如下:
http://127.0.0.1:8888 --> http://username:password@127.0.0.1:8888
例:设置Charles代理
import requests
proxy_server = {
"http":"http://127.0.0.1:8888",
"https":"http://127.0.0.1:8888"
}
response = requests.get(url="http://47.107.178.45/phpwind/",
proxies=proxy_server) #proxies是proxy的复数形式
五、requests超时时间设置
response = requests.get(url="http://47.107.178.45/phpwind/",
# timeout=0.01 #浮点型数据,代表响应超时时间 单位是秒
timeout=(0.01,0.02)) #元组类型 0.01代表连接超时时间、0.02代表响应超时时间
六、requests重定向功能
requests默认支持自动重定向的,可以使用allow_redirects=False关闭自动重定向功能
七、requests 自定义异常
import requests
from requests.exceptions import ConnectTimeout
from requests.exceptions import RequestException
try:
float_time= float(input('请输入超时时间:'))
response = requests.get(url='https://www.baidu.com/',
timeout=float_time)
except ConnectTimeout as e:#ConnectTimeout是requests模块自定义异常
print('请求在设定的时间内无法返回,产生超时错误')
except RequestException as e: # requests 所有异常子类的父类
print('请求报错,具体原因未知')
except Exception as e:
print('系统报错,具体原因未知')
你学会了吗?
|
|