请选择 进入手机版 | 继续访问电脑版

湖南新梦想

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 253|回复: 0

requests小知识

[复制链接]

31

主题

31

帖子

181

积分

注册会员

Rank: 2

积分
181
发表于 2022-6-22 20:03:27 | 显示全部楼层 |阅读模式
本帖最后由 刘颖 于 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('系统报错,具体原因未知')





你学会了吗?




回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|湖南新梦想 ( 湘ICP备18019834号-2 )

GMT+8, 2022-11-28 17:44 , Processed in 0.055098 second(s), 19 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表