requests

作者: harukou_ou | 来源:发表于2018-02-01 19:37 被阅读10次

    HTTP 协议

    HTTP: Hypertext Transfer Protocol.
    URL:是通过http协议存取资源的一个Internet路径,对应一个数据资源。

      格式: http://host[:port][path]
      host:合法的Internet主机域名或IP地址
      port:端口号,缺省端口为80
      path:请求资源的路径
    

    requests的7个方法:

    1. requests.request()

    requests.request(method,url,**kwargs)
    #methon 请求方式 对应以上7种方法
    #url 对应请求资源
    #13个控制访问参数
    

    **kwargs

    1.params:字典或字节序列作为参数增加到url
    例如:

    >>> kv = {'k1':'v1','k2':'v2'}
    >>> r = requests.request('GET','http://python123.io/ws',params = kv)
    >>> print(r.url)
    https://python123.io/ws?k1=v1&k2=v2
    

    2.data: 字典、字节或文件对象,作为Request的内容

    r = requests.request('POST','http://python123.io/ws',data = kv)
    

    3.json:JSON格式的内容作为Request的内容

    #kv为json格式
    r = requests.request('POST','http://python123.io/ws',json = kv)
    

    4.headers:字典,定制http头

    #kv为字典
    kv = {'user-agent':'chrome/10'}
    r = requests.request('POST','http://python123.io/ws',headers = kv)
    

    5.cookies:字典或CookieJar,Request中的cookie
    6.auth:元组,支持http认证功能
    7.files: 字典,传输文件

    #向链接提交文件
    fs = {'file': open('data.xls','rb')}
    r = requests.request('POST','http://python123.io/ws',files = fa)
    

    8.timeout :设定超时时间,s为单位
    r = requests.request('GET','http://www.baidu.com',timeout =10)
    9.proxies:字典类型,设定访问服务器,增加登录认证

    #隐藏用户IP地址
    pxs = {'http': 'http://user:pass@10.10.10.1:1234','https'://10.10.10.1:4321'}
    r = requests.request('GET', 'http://www.baidu.com',proxies = pxs)
    

    10.allow_redirects: True/False,默认为True,重定向开关
    11.stream:True/False,默认获取内容立即下载开关
    12.verify:True/False ,默认认证SSL证书
    13.cert:本地SSL证书路径
    2.requests.get() #获取资源
    requests.get(*url*,*params=None*,***kwarges*)

    3. requests.head()#获取头部信息
    r = requests.head(url)
    r.headers

    4.requests.post()#原资源后附加数据

    >>> payload = {'key1':'value1','key2':'value2'}
    # data = str,"data" = str;data = dict, "form" = dict
    >>> r = requests.post('http://httpbin.org/post',data = payload)
    >>> print(r.text)
    { 
      "data": "",
      "form": {
        "key1": "value1", 
        "key2": "value2"
      }
    }
    

    5. requests.put()#覆盖URL位置资源
    与post类似,但原资源被覆盖

    6. requests.patch()#修改资源

    7.requests.delete()#删除资源


    例子

    import requests
    r = requests.get('http://www.baidu.com)
    r.status_code
    r.encoding = 'utf-8'
    r.text
    

    requests的七个方法


    Response对象的属性

    import requests
    r = requests.get('http://www.baidu.com')
    r.status_code
    type(r)
    r.headers
    
    1. r.status_code
      200表示成功,404失败
    2. r.text
      url对应的内容
    3. r.encoding
      header中猜测的响应内容编码方式
    4. r.apparent_encoding
      从内容中分析出的响应内容编码方式
    5. r.content
      http相应内容的二进制形式

    1. r.request.headers
      请求头部信息

    1. r.raise_for_status()
      若不是200引发http error

    Requests库6种常见异常

    1. requests.ConnectionError
    2. requests.HTTPError
    3. requests.URLRequired
    4. requests.TooManyRedirects
    5. requests.ConnectionTimeout
    6. requests.Timeout

    Respose对象异常

    r.raise_for_status() 
    #如果不是200 ,产生requests.HTTPError
    

    通用代码框架

    import requests
    
    def getHtmlText(url):
        try:
            r = requests.get(url)
            r.raise_for_status()
            r.encoding = r.apparent_encoding
            return r.text
        except:
            return '产生异常'
    
    if __name__ == '__main__':
        url = 'http://www.baidu.com'
        print(getHtmlText(url))
    

    相关文章

      网友评论

          本文标题:requests

          本文链接:https://www.haomeiwen.com/subject/qbudzxtx.html