zoukankan      html  css  js  c++  java
  • python爬虫之requests库

    什么是Requests

     

    Requests 是用python语言编写,基于urllib,采用Apache2 Licensed 开源协议的HTTP库。它比urllib 更加方便,可以节约我们大量的工作,完全满足HTTP 测试需求。

     

    一句话——python实现的简单易用的HTTP

     

     

    Requests的安装

    pip install requests.

     

     

    相关用法

    1. import requests

       response = requests.get(‘’https:// www.baidu.com/) #返回网页的内容

       print(type(response))  #类型 request.Models.Response

       print(response.status_code)  #返回一个状态码  200访问成功

       Print(type(response.text)) #返回响应内容的字符串形式

       Print(response.headers)  #返回get请求获得页面的头部信息

       Print(response.cookies)

    Print(response.encoding )#http header中猜测出来的响应内容的编码格式

    Print(response.apparent_encoding)  #从内容中分析响应内容的编码格式

     

     

    #text乱码时候

    r.encodong=utf-8  即可

     

     

    2. 各种请求方式

    import requests

    Payloade={

    ‘’key1:1,

    key2:2

    }

     

    requests.post(网址,date=paylode)

    #默认存储到表单下

    字符串存储到date内容下

     

      requests.put(网址)

      requests.delete(网址)

     

     

      R=requests.head(网址) 返回网页的头部信息

        R.headers

     

    requests.patch(网址)

    理解patchput的区别

    假设url位置有一组数据UserInfo ,包括UserIDUserName20个字段

     

    需求:用户修改了UserName,其他不变

    1. 采用PATCH ,仅向url提交UserName的局部更新请求

    2. 采用PUT, 必须将20个字段一起提交,未提交的字段被删除

    Ps

    1. 可见PATCH的最主要好处是节省网络宽带

    2. HTTP 协议和Request库方法是一致并且一一对应的

     

     

     

    请求

       基于GET请求

    基本写法

     

    import requests

    response=requests.get(https://www.dbmeinv.com/) #获取网页的内容

    print(response.text)  以文本格式保存

     

    带参数的GET请求

    import requests

    response=requests.get(https://www.dbmeinv.com/?pager_offset=1') #获取网页的内容

    print(response.text)  以文本格式保存

     

    import requests

     

    data={

    name:lilei

    age:18

    }

    response=requests.get(http://httpbin.org/get,params=data)

    print(response.text)

     

     

    解析json

     

    import requests

    response=requests.get(http://httpbin.org/get)

    print(type(response.text))

    print(response.json()) #等价于json.loads

    print((response.json))

     

    获取二进制数据(文件下载,音频

    import requests

    response=requests.get(http://github.com/favicon.ico)

    print(type(response.text),type(response.content))

    print(response.text) #文本形式

    print(response.content)#二进制内容

     

     

     

    import requests

    response=requests.get(http://github.com/favicon.ico)

    with open(favicon,wb) as f:

    f.write(reponse.content)

    f.close()

     

     

     

    Requests库的get方法

    r = requests.get(url)

    函数内容:构造一个向服务器请求资源的Request 对象

    返回的是一个包含服务器资源的Response对象(包含爬虫返回的全部内容)

    爬取网页内容的通用代码框架

    Requests支持6种链接库的异常

     

     

     

    方法:response.raise_for_status()   ps:如果不是200,返回一个requests.HTTPError的异常

     

     

    import requests

    def getHTMLText(url):

    try:

    r = requests.get(url,timeout=30)

    r.raise_for_status()#如果状态码不是200,引发HTTPError的异常

    r.encoding = r.apparent_encoding

    return r.text

    except:

    return 产生了异常

     

    if __name__== __main__:

    url = http://baidu.com

    print(getHTMLText(url))

     

     

    #requests.request()13个控制访问参数

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

    """

    method:请求方式,对应get/put/post7

    url:拟获取页面的url链接

    **kwargs:控制访问参数,共13

    **kwargs:控制访问的参数,均为可选项:

    params:字典或字节序列,作为参数增加到url

     

     

    例:kv={'key1':'value','key2':'value2'}

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

        print(r.url)

    http://python.io/ws?key1=value1&key2=value2

     

    data:字典,字节序列或文件对象,作为Request的内容

     

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

     

    headers:字典,HTTP定制头(模拟浏览器进行访问)

     

    cokies:字典或CpplieJar,Request中的cookie

     

    auth:元祖,支持HTTP认证功能

     

    files:字典类型,传输文件

     

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

     

    proxies:字典类型,设定访问代理服务器,可以增加登陆认证

     

    allow_redirects:True//False,默认为True,重定向开关

     

    stream:True/False,默认为True,获取内容立即下载开关

     

    verify:True/False,默认为True,认证SSL证书开关

     

    cert:本地SSL证书路径"""

     

     

  • 相关阅读:
    利用python 掌握机器学习的过程
    SendMessage用法
    python函数形参中的*args和**kwargs
    python 用win32修改注册表,修改打开IE浏览器的配置
    python .py .pyc .pyw .pyo .pyd区别
    代码性能提升10倍(ForkJoin)
    雪花算法生成id
    配置虚拟机
    kafka多线程消费
    Redis存储对象序列化和反序列化
  • 原文地址:https://www.cnblogs.com/pythonyeyu/p/10475048.html
Copyright © 2011-2022 走看看