python:requests和urllib.request区别、session

>requests和urllib.request区别:

1、request是python 自带的,使用 import urllib.request;
   而 requests需要pip install

2、requests更加便捷,直接设置header 和数据格式即可

3、requests封装方法主要有:
requests.get(url, params=None, **kwargs)
requests.post(url, data=None, json=None, **kwargs)
requests.request(method, url, **kwargs)######推荐用【requests.request】

4、举例:requests/api.py
data = {"name":"张三", "age": 12}
re=requests.request('post',"http://httpbin.org/post", json=data)
print(json.loads(res.text))


urllib.request不好用弃之
http.client 不好用弃之
requests库  好用

>requests的各种请求格式

1、get请求
样式:
requests.get(url=url, headers=headers, params=params)
requests.request(method,url,params=request_data)
params:KV   或  {}     或者不要params,url拼接?KV
中文不需要特殊处理
def get_sample(productSeriesId):
    url='https://api.blockbzz.cn/blockbzz/product/productSeries/productList'
    method='get'
    request_data="pageNumber=2&pageSize=8&productSeriesId=%s"%productSeriesId
    request_data={
        "pageNumber":2,
        "pageSize":8,
        "productSeriesId":productSeriesId
    }
    res = requests.request(method,url,params=request_data,verify=False)
    print(res.json()['data']['total'])

2、post-application/x-www-form-urlencoded
样式:
requests.post(url=url, headers=headers, data=params)
requests.request(method,url,data=request_data)
params:KV   或  {}   推荐{}
kv时候 中文需要quoto处理!!
headers={"content-type":"application/x-www-form-urlencoded"}#默认,可以省略

from urllib.parse import quote
def post_sample1():
    data = {"name":"张三", "age": 12}#推荐{}

    #data="name=张三&age=12"
    #data = quote(data, 'utf-8')#kv 中文需要处理
    res=requests.request('post',"http://httpbin.org/post", data=data)
    print(json.loads(res.text))

3、post-application/json
参数:
data需要json.dumps处理  dict->str
json不需要处理
中文不需要特殊处理
headers={"content-type":"application/json;charset=UTF-8"}
requests.request(method='post',url=url, headers=headers,data=params)#json.dumps
requests.request(method='post',url=url,headers=headers, json=params)
举例:
data={"name":"张三", "age": 12}
res=requests.request(method='post',url="http://httpbin.org/post",headers=headers, json=data)
或者
res=requests.request(method='post',url="http://httpbin.org/post", headers=headers,data=json.dumps(data))

4、post-multipart/form-data
可以使用插件:from requests_toolbelt import MultipartEncoder
也可以使用data+file参数
requests.post(url=url, headers=headers, data=params, files=files)#文件-1
files = {'upload_img': ('report.png', open('report.png', 'rb'), 'image/png')}
也可以使用:
from requests_toolbelt import MultipartEncoder
headers['Content-Type']='multipart/form-data;boundary=----WebKitFormBoundarykhgDKtdBx1Ci8WBi'
url=url+'/admin/image/upload'##文件-2
m=MultipartEncoder(
            fields={
                    'file': ('10.jpg',open(r'C:\Users\Dell\Desktop\2.png','rb'), 'image/png/jpeg/jpg')
                    },
            boundary='----WebKitFormBoundarykhgDKtdBx1Ci8WBi'
        )
r = requests.post(url=url,data=m,headers=headers)

5、post-text/xml用到的少
xml = """my 22222 xml"""
headers = {'Content-Type': 'text/xml'}
res=requests.post('http://httpbin.org/post',data=xml.encode("utf-8"),headers=headers)

封装后:
requests.request(method=method,url=url,headers=headers, params=params,data=data,json=json,files=files)

##所有请求参数 都用{}形式传,都支持的!!方便统一

>requests/session.py

import requests

# 使用 requests.request() 发送请求 每次创建一个session对象,没有保持会话的状态。
#请求完即刻断开连接(连接只用一次)
response1 = requests.request('GET', 'https://api.example.com',verify=False)

# 使用 Session 对象发送请求 保持会话
#需要手动断开连接 连接可以反复使用
session = requests.session()
response2 = session.request('GET', 'https://api.example.com',verify=False)

#verify=False 禁用SSL证书验证

session好处:
在多个请求之间保持会话状态,例如 cookie、身份验证信息等。
自动处理 cookie 的存储和发送。
可以使用 Session 对象发送多个请求,复用底层的 TCP 连接,提高性能。

综上所述,requests.session().request() 方法适用于需要在多个请求之间保持会话状态、共享连接池、设置全局请求参数、处理错误和重试等高级场景。它提供了更灵活和可定制的请求管理方式,适用于复杂的请求需求和特定的应用场景。

requests.session().request()#常用场景cookie/token:自动处理发送请求获取响应过程中产生的cookie,进而达到状态保持的目的。#github登录session

>ASCII转为Native

name = "\\u6697\\u88d4\\u5251\\u9b54"
print(name.encode().decode('unicode_escape'))#暗裔剑魔

参考:

https://blog.csdn.net/lusainan_testgirl/article/details/105399927
https://note.youdao.com/s/4pUcXHua

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值