AI智能
改变未来

requests模块的使用


一、requests的使用

安装:pip install requests

get请求

1、发送 get 请求

import requestsheader = {\'referer\': \'https://www.baidu.com\'}# 请求并获取返回结果re = requests.get(\'UI/UE/u=1951548898,3927145&fm=193\',.jpg headers=header)

2、请求中携带数据

# 第一种:中文会被编码ret = requests.get(\'https://www.baidu.com/s?wd=小杨\')# 第二种:会自动进行编码(推荐)ret = requests.get(\'https://www.baidu.com/\', params={\'wd\': \'小杨\'})

3.请求中携带cookie

# 方式一:在header中放入cookieheader = {\'referer\': \'https://www.baidu.com\',\'cookie\':\'key=qeinpkdi;key2=laisdno;key3=winqcl\'}ret = requests.get(\'http://127.0.0.1\', headers=header)# 方式二:cookies是一个字典或者CookieJar对象ret = requests.get(\'http://127.0.0.1\', cookies={\'key\': \'insidns\'})

post请求

post 请求和 get 请求大致都是一样的:

1、发送post请求,携带数据

ret = requests.post(\'http://127.0.0.1\', data={\'name\': \'小杨\'})

2、自动携带cookie

session = requests.session()res = session.post(\'http://127.0.0.1/login/\')  	# 假设这个请求登录了ret = session.get(\'http://127.0.0.1/index/\')    # 现在不需要手动带cookie,session会自己处理

response响应对象

也就是请求后响应的对象

1、查看响应信息

response=requests.post(\'http://127.0.0.1:8000/index/\',data={\'name\':\'xiaoyang\'})print(response.text)         # 响应的文本print(response.content)      # 响应体的二进制print(response.status_code)  # 响应状态码print(response.headers)      # 响应头print(response.cookies)      # cookieprint(response.cookies.get_dict())   # 把cookie转成字典print(response.cookies.items())      # key和valueprint(response.url)          # 请求的urlprint(response.history)      # []放重定向之前的地址print(response.encoding)     # 响应的编码方式response.iter_content()      # 图片,视频,大文件,可以以一点一点循环取出来# 例如:with open(\'a.jpg\', \'wb\') as f:for line in response.iter_content():f.write(line)

2、编码问题

ret = requests.get(\'http://127.0.0.1\')# 如果打印出来的是乱码# 方式一:可以从HTML标签meta中查看在encodingret.encoding=\'gb2312\'# 方式二:自动去HTML标签中查,不用自己去查ret.encoding=ret.apparent_encoding

3、解析 JSON

ret = requests.get(\'http://127.0.0.1\')# 方式一:自己解析的情况下import jsonjson.loads(ret.text)# 方式二:ret.json()

高级用法

1、SSL证书验证

https 的请求,会先检查证书是否合法,不合法就报错。

# 去掉报错,但是会报警告ret = requests.post(\'https://127.0.0.1\', verify=False)    # 不验证证书,报警告,返回200# 去掉报错,并且去掉报警信息from requests.packages import urllib3urllib3.disable_warnings()  # 关闭警告respone=requests.get(\'https://127.0.0.1\', verify=False)# 使用证书,需要手动携带ret = requests.post(\'https://127.0.0.1\',cert=(\'/path/server.crt\',\'/path/key\'))

2、使用代理

# 格式:respone=requests.get(\'http://127.0.0.1:8000/index/\',proxies={\'http\':\'代理的地址和端口号\',})# 代理池:列表放了一堆代理ip,每次随机取一个,再发请求就不会封ip了# 如果使用高匿代理,后端无论如何拿不到你的ip,使用透明,后端能够拿到你的ip# 后端可以通过 X-Forwarded-For 拿到透明代理的ip。respone=requests.get(\'https://www.baidu.com/\',proxies={\'http\':\'27.46.20.226:8888\',})

3、超时设置

respone=requests.get(\'https://www.baidu.com\',timeout=0.0001)

4、文件上传

res=requests.post(\'http://127.0.0.1\',files={\'myfile\':open(\'a.jpg\',\'rb\')})
赞(0) 打赏
未经允许不得转载:爱站程序员基地 » requests模块的使用