• 11.Python-第三方库requests详解(三)


    Response对象

    使用requests方法后,会返回一个response对象,其存储了服务器响应的内容,如上实例中已经提到的 r.text、r.status_code……
    获取文本方式的响应体实例:当你访问 r.text 之时,会使用其响应的文本编码进行解码,并且你可以修改其编码让 r.text 使用自定义的编码进行解码。

    r = requests.get('http://www.itwhy.org')
    print(r.text, '
    {}
    '.format('*'*79), r.encoding)
    r.encoding = 'GBK'
    print(r.text, '
    {}
    '.format('*'*79), r.encoding)

    其他响应

    r.status_code #响应状态码
    r.raw #返回原始响应体,也就是 urllib 的 response 对象,使用 r.raw.read() 读取
    r.content #字节方式的响应体,会自动为你解码 gzip 和 deflate 压缩
    r.text #字符串方式的响应体,会自动根据响应头部的字符编码进行解码
    r.headers #以字典对象存储服务器响应头,但是这个字典比较特殊,字典键不区分大小写,若键不存在则返回None
    #*特殊方法*#
    r.json() #Requests中内置的JSON解码器
    r.raise_for_status() #失败请求(非200响应)抛出异常

    案例一:

     1 url = 'http://ip.taobao.com/service/getIpInfo.php' #这是淘宝IP地址的一个API
     2 data = {
     3     'ip':'8.8.8.8'
     4 }    #这里构建一个数据字典
     5 r = requests.get(url,params=data) #传入字典数据给API调用
     6 print r.url #打印对应的属性
     7 
     8 try:
     9     r = requests.get(url,params=data)
    10     r.raise_for_status()
    11 except requests.RequestException as e:
    12     print e
    13 else:
    14     result = r.json()
    15     print type(result),result

    把字符串当文件上传

    1 url = 'http://127.0.0.1:5000/upload'
    2 files = {'file':('test.txt',b'Hello Requests.')} #将字符串直接当文件传入
    3 
    4 r = requests.post(url,file=files)
    5 print r.text

    身份验证

    r = requests.get('https://httpbin.org/hidden-basic-auth/user/passwd',auth=HTTPBasicAuth('user','passwd'))
    r = requests.get('https://httpbin.org/hidden-basic-auth/user/passwd',auth=('user','passwd')) #简写
    print r.json()

    另一种非常流行的HTTP身份认证形式是摘要式身份认证,Requests对它的支持也是开箱即可用的:

    1 requests.get(url,auth=HTTPDigestAuth('user','pass'))

    Cookies与会话对象

    如果某个响应中包含一些Cookie,你可以快速访问它们:

    1 r = requests.get('http://www.google.com.hk/')
    2 print r.cookies['NID']
    3 print tuple(r.cookies)

    要想发送你的cookies到服务器,可以使用 cookies 参数:

    1 import requests
    2  
    3 url = 'http://httpbin.org/cookies'
    4 cookies = {'testCookies_1': 'Hello_Python3', 'testCookies_2': 'Hello_Requests'}
    5 # 在Cookie Version 0中规定空格、方括号、圆括号、等于号、逗号、双引号、斜杠、问号、@,冒号,分号等特殊符号都不能作为Cookie的内容。
    6 r = requests.get(url, cookies=cookies)
    7 print(r.json())

     

  • 相关阅读:
    MongoDB,无模式文档型数据库简介
    数据说话:怎样的程序员最抢手?
    猛醒:也许我们一生追求的都错了!
    中国风电生产监控平台界面
    如何跟着趋势去赚钱
    2015年最好的员工心态培养 -- 我们需要把简单的事情做到极致
    什么是程序员的核心竞争力?
    第一篇 技术选型
    .net core 读取配置文件
    .net core nlog记录日志
  • 原文地址:https://www.cnblogs.com/stephenmc/p/7569934.html
Copyright © 2020-2023  润新知