Python Requests模块的基本使用

    科技2022-09-02  91

    一、发送请求

    1.1 GET

    r=requests.get(url)

    1.2 POST

    r=requests.post(url,[data={key:value}])

    1.3 其他

    put、delete、head、options等采取和GET、POST一样的格式

    二、传递参数

    2.1 构建请求体

    data={'key1':'value1','key2':'value2'} request=requests.get(url,params=data)

    2.1.1 列表传值

    data={'key1':'value1','key2':['value2','value3']} request=requests.get(url,params=data)

    三、响应内容

    3.1 打印响应内容

    request=requests.get(url) print(r.text)

    Requests会自动解码,所以可以直接打印。

    3.2 更改编码格式

    r.encoding='编码'

    3.3 保存响应内容

    with open(filename,'wb') as f: for chunck in r: f.write(chunck)

    四、请求

    4.1 定制请求头

    headers={'user-agent':'内容'} request=requests.get(url,headers=headers) 如果设置了用户认证,那么headers设置的授权将不会生效如果请求遭到重定向,那么header会被删除代理授权header会被URL中提供的代理身份覆盖Requests不会基于定制header改变自己的行为所有header值必须是string、bytestring或者unicode

    4.2 复杂请求

    4.2.1 定制POST请求

    4.2.1.1 字典表单

    data={'key1':'value1','key2':'value2'} request=requests.post(url,data=data)

    对于data,可以自己进行json编码,如果没有,Requests会自动编码。

    4.2.1.2 元组表单

    data=(('key1','value1'),('key2','value2')) request=requests.post(url,data=data)

    4.2.2 POST提交多编码文件

    4.2.2.1 文件直接上传

    file={'file':open(filename,'rb')} request=requests.post(url,files=file)

    4.2.2.2 生成文件上传

    file={'file':(filename,'content1,congtent2\ncontent3,content4\n...')} request=requests.post(url,files=file)

    五、响应状态码

    5.1 检测响应状态码

    5.1.1 打印

    request=requests.get(url) print(request.status_code)

    5.1.2 响应码对象校验

    print(request.status_code==requests.codes.ok)

    5.2 错误请求的处理

    5.2.1 异常抛出

    bad_r=requests.get(url) bad_r.raise_for_status()

    六、Cookie

    6.1 打印Cookie

    request=requests.get(url) print(request.cookies['CookieName'])

    6.2 发送Cookie到服务器

    cookie=dict(CookieNmae='value') request=requests.get(url,cookies=cookies)

    6.3 发送多Cookie

    cookies=requests.cookies.RequestCookieJar() cookies.set('cookie1','value1',domain='域名',path='路径1') cookies.set('cookie2','value2',domain='域名',path='路径2') request=reqeusts.get(url,cookies=cookies)

    七、重定向

    除了HEAD,Requests会自动处理所有重定向,可以使用history方法来追踪,也可以使用allow_redirects禁用重定向。

    7.1 重定向追踪

    request=requests.get(url) print(request.history)

    7.2 禁用重定向

    request=requests.get(url,allow_redirests=False)

    八、超时与其他异常

    8.1 超时处理

    为避免程序永久失去响应,我们可以设置timeout参数,这样当请求达到一定时常后,程序就会抛出异常。

    requests.get(url,timeout=0.001)

    8.2 其他异常

    ConnectionError:网络问题。DNS查询失败、拒绝连接等

    HTTPError:返回了不成功的状态码

    Timeout:请求超时

    TooManyRedirects:超过设定的最大重定向次数

    Processed: 0.016, SQL: 9