request基本使用及各种请求方式参数的示例
目录
各种请求方式
pip3 install requests >>> import requests >>> r = requests.get("https://www.cnblogs.com") >>> r = requests.post("https://www.cnblogs.com", data = {"key":"value"}) >>> r = requests.put("https://www.cnblogs.com", data = {"key":"value"}) >>> r = requests.delete("https://www.cnblogs.com") >>> r = requests.head("https://www.cnblogs.com") >>> r = requests.options("https://www.cnblogs.com")
request各种参数
参数 | 说明 |
---|---|
params | 字典或字节序列,作为参数增加到url中 |
data | 字典,字节序列或文件对象,作为request的内容 |
json | JSON格式的数据,作为request的内容 |
headers | 字典,HTTP定制头 |
cookies | 字典或CookieJar, request中的cookie |
auth | 元组,支持HTTp认证功能 |
files | 字典类型,传输文件 |
timeout | 设定超时时间,秒为单位 |
proxies | 字典类型,设定访问代理服务器,可以增加登录认证 |
allow_redirects | 重定向开关,默认为True |
stream | 获取内容立即下载开关,默认为True |
verify | 认证SSL证书开关,默认为True |
cert | 本地SSL证书路径 |
request基本使用
import requests response = requests.get("https://www.cnblogs.com/kermitjam/") print(response.text) print(respone.text) # 响应体转成str print(respone.content) # 响应体二进制(图片,视频) print(respone.status_code) # 响应状态码 print(respone.headers) # 响应头 print(respone.cookies) # 服务端返回的cookie print(respone.cookies.get_dict()) # 转成字典 print(respone.cookies.items()) print(respone.url) # 当次请求的地址 print(respone.history) # 如果有重定向,放到一个列表中.查看上一次请求从哪里来。(图片防盗链) print(respone.encoding) # 编码方式 print(respone.iter_content()) # 视频,图片迭代取值 content-length # 查看下载前文件大小 response.iter_content() # 视频,图片迭代取值 with open("a.mp4","wb") as f: for line in response.iter_content(): f.write(line)
get请求携带参数
# 方式一:会转码,不推荐 response = requests.get("https://www.baidu.com/s?wd=%E7%BE%8E%E5%A5%B3") # 方式二:推荐 response = requests.get("https://www.baidu.com/",params={"name":"美女","age":18})
get请求携带headers头
respone = requests.get("http://127.0.0.1:8000/",params={"name":"美女","age":18}, headers={ # 标志,什么东西发出的请求,浏览器信息,django框架,从哪取?(meta) "User-Agent": "request", # 上一个页面的地址,图片防盗链 "Referer": "xxx" }) print(respone.status_code)
get请求携带cookie
带cookie,随机字符串(用户信息:也代表session),不管后台用的token认证,还是session认证
一旦登陆了,带着cookie发送请求,表示登陆了(下单,12306买票,评论)
# 第一种方式 ret = requests.get("http://127.0.0.1:8000/",params={"name":"美女","age":18}, headers={ "cookie": "key3=value;key2=value", }) # 第二种方式 ret = requests.get("http://127.0.0.1:8000/",params={"name":"美女","age":18}, cookies={"islogin":"xxx"}) print(ret.status_code)
post请求携带数据(注册、登录)
# data:urlencoded编码 ret = requests.post("http://127.0.0.1:8000/", data={"name": "jeff", "age": 18}) # data:json编码 import json data = json.dumps({"name": "jeff", "age": 18}) ret = requests.post("http://127.0.0.1:8000/", json=data) print(ret) # 注意:编码格式是请求头中带的,所以可以手动修改,在headers中改
session对象
# session对象 session=requests.session() # 跟requests.get/post用起来完全一样,但是它处理了cookie # 假设是一个登陆,并且成功 res = session.post("http://127.0.0.1:8000/") # # 再向该网站发请求,就是登陆状态,不需要手动携带cookie res = session.get("http://127.0.0.1:8000/") print(res)
乱码问题
# 加载回来的页面,打印出来,乱码(我们用的是utf8编码),如果网站用gbk, ret = requests.get("http://127.0.0.1:8000/") ret.encoding="gbk" # 修改编码 print(ret.apparent_encoding) # 当前页面的编码 # ret.encoding = ret.apparent_encoding print(ret.encoding) print(ret.apparent_encoding)
解析json数据
# 返回数据,有可能是json格式,有可能是html格式 ret=requests.get("http://127.0.0.1:8000/") # print(type(ret.text)) # print(ret.text) a=ret.json() print(a["name"]) print(type(a))
使用代理
代理简单解释: 代理其实就是一个中介,A和B本来可以直连,中间插入一个C,C就是中介。 #高匿:服务端,根本不知道我是谁 #普通:服务端是能够知道我的ip的 #http请求头中:X-Forwarded-For:代理的过程 爬虫使用正向代理好处: 1.突破频率限制。做个代理池,每次请求都是不同的Ip,服务器认为是不同的用户 2.不会封自己的ip。 正向代理即是客户端代理, 代理客户端, 服务端不知道实际发起请求的客户端. 反向代理即是服务端代理, 代理服务端, 客户端不知道实际提供服务的服务端
ret = requests.get("https://www.pearvideo.com/", proxies={"http": "47.115.54.89"}) print(type(ret.text)) print(ret.text)
上传文件
# 爬虫用的比较少,后台写服务 file = {"myfile": open("1.txt", "rb")} ret = requests.post("http://127.0.0.1:8000/", files=file) print(ret.content)
以上就是request基本使用及各种请求方式参数的示例的详细内容,更多关于request使用及请求方式参数的资料请关注脚本之家其它相关文章!
X 关闭
X 关闭
- 15G资费不大降!三大运营商谁提供的5G网速最快?中国信通院给出答案
- 2联想拯救者Y70发布最新预告:售价2970元起 迄今最便宜的骁龙8+旗舰
- 3亚马逊开始大规模推广掌纹支付技术 顾客可使用“挥手付”结账
- 4现代和起亚上半年出口20万辆新能源汽车同比增长30.6%
- 5如何让居民5分钟使用到各种设施?沙特“线性城市”来了
- 6AMD实现连续8个季度的增长 季度营收首次突破60亿美元利润更是翻倍
- 7转转集团发布2022年二季度手机行情报告:二手市场“飘香”
- 8充电宝100Wh等于多少毫安?铁路旅客禁止、限制携带和托运物品目录
- 9好消息!京东与腾讯续签三年战略合作协议 加强技术创新与供应链服务
- 10名创优品拟通过香港IPO全球发售4100万股 全球发售所得款项有什么用处?