• Requests的基本使用


    Requests库

    r=requests.get(url)
    #返回一个包含服务器资源的Response对象
    #构造一个向服务器请求资源的Request对象
    

    格式:requests.get(url,params=None,**kwargs)

    • url 抓取页面的url连接
    • params:url中的额外参数,字典或者字节流的格式
    • **kwargs 12个访问控制参数

    Response对象

    import requests
    r=requests.get("http://www.baidu.com")
    print(r.status_code)#状态码 200 成功 别的失败
    type(r)
    r.headers
    
    属性 说明
    r.status_code 状态码,200成功,404失败
    r.text url对应的页面的内容
    r.encoding 编码方式
    r.apparent_encoding 分析出的编码
    r.content 相应内容二进制内容

    流程

    >>> import requests
    >>> r=requests.get('http://www.baidu.com')
    >>> r.status_code
    200
    >>> r.content
    >>> r.encoding
    'ISO-8859-1'
    >>> r.apparent_encoding
    'utf-8'
    >>> r.encoding=r.apparent_encoding
    >>> r.content
    

    编码

    r.encoding 猜测的编码方式
    r.apparent_encoding 从内容分析出的编码方式

    Request库的异常

    异常 异常作用
    requests.ConnectionError 网络连接异常
    requests.HTTPError HTTP错误异常
    requests.URLRequired URL缺失异常
    requests.TooManyRedirects 重定向异常
    requests.ConnectTimeout 连接服务器超时异常
    requests.Timeout 请求URL超时异常
    r.raise_for_status() 如果不是200,产生http异常

    通用的代码

    import requests
    def getHTMLText(url):
        try:
            r=requests.get(url,timeout=20)
            r.raise_for_status()
            r.encoding=r.apparent_encoding
            return r.text
        except:
            return "产生异常"
            
    

    Requests库的七个主要方法

    方法 说明
    requests.request() 构建请求
    requests.get() 获取html主要方法
    requests.head() 获取头方法
    requests.post() POST请求
    requests.put() PUT请求
    requests.patch() 局部修改
    requests.delete() 删除请求

    HTTP协议

    超文本传输协议

    用户发起请求,服务器给出回应,每次发出请求与请求之间互不影响

    采用url来定位资源表示

    URL格式:http://host[:port][path]

    host:主机的域名或者IP的地址
    port:端口号
    path:请求资源的路径

    URL存取的是网络上资源的路径,一个URL对应一个数据资源

    HTTP协议对资源的操作

    方法 说明
    GET 获取位置资源
    HEAD 获取头部信息
    POST 请求向url位置资源之后添加新的信息
    PUT 向url位置存储资源,覆盖url位置资源
    PATCH 更新url位置的资源
    delete 删除URL位置的资源

    PATCH和PUT的区别

    假设URL位置有一组数据UserInfo,包括UserID,UserName,等20个字段
    采用PATCH,仅仅向URL提交UserName的局部更新要求
    采用PUT,必须将所有20个字段一并提交到URL,未提交字段被删除

    r=requests.head(url)
    r.headers
    

    post()

    payload={'key1':'value1','key2':'values'}
    r=requests.post(url,data=payload)
    print(r.text)
    

    put()

    payload={'key1':'value1','key2':'value2'}
    r=requests.put('http://httpbin.org/put',data=payload)
    print(r.text)
    

    Requests库解析

    request

    requests.request(method,url,**kwargs)

    **kwargs:控制访问参数
    params:字典或者字节序列,作为参数增加到url中

    kv={'key1':'value1','key2':'value2'}
    r=requests.request('GET','http://python123.io/ws',params=kv)
    print(r.url)
    #http://python123.io/ws?key1=value1&key2=value2
    

    json:json格式的数据作为Request的内容

    kv={'key1':'value1'}
    r=requests.request('POST','http://python123.io/ws',json=kv)
    

    header:字典,http定制头

    hd={'user-agent':'Chrome/10'}
    r=requests.request('POST','http://python123.io/ws',headers=hd)
    
    

    cookies:字典或者cookieJar,Request中的cookie
    auth:元组,支持http认证功能
    files:字典类型,传输文件

    fs={'file':open('data.xls'),'rb'}
    r=requests.request('POST','http://python123.io/ws',files=fs)
    
    

    timeout:设定超时时间,以秒为单位

    r=requests.request('GET','http://www.baidu.com',timeout=10)
    

    proxies:字典类型,设定代理服务器,可以增加登录的认证
    异常ip地址

    pxs={'http':'http://user:pass@10.10.10.1:1234',
         'http':'http://10.10.10.1:4321'}
    r=requests.request('GET','http://www.baidu.com',proxies=pxs)
    

    allow_redirects:重定向开关
    stream:获取内容重定向下载开关
    verify:认证ssl证书开关

    head

    13个控制参数和request完全一样

    post

    post(url,data=None,json=None,**kwargs)

    url:要更新页面的url链接
    data:字典
    json:JSON的数据格式,Request的内容
    **kwargs:11个访问控制参数

    put

    url:要更新的url链接
    data:字典,字节序列或者文件,request的内容
    **kwargs:12个访问控制参数

    patch

    url:要更新的页面的url
    data:字典、字节序列或者文件,request的内容
    **kwargs:12个访问控制参数

    delete

    url 要删除的url的资源
    **kwargs:13个访问的控制参数

  • 相关阅读:
    第二阶段冲刺(一)
    第一冲刺阶段博客检查汇总
    整改方案
    意见
    站立会议(九)
    站立会议八
    我爱淘二次冲刺阶段1
    我爱淘冲刺阶段7
    我爱淘冲刺阶段6
    我爱淘冲刺阶段5
  • 原文地址:https://www.cnblogs.com/mengxiaoleng/p/11575127.html
Copyright © 2020-2023  润新知