zoukankan      html  css  js  c++  java
  • request库

    0x00  环境简介和安装


    我这里使用的是python2.7版本,直接使用pycharm2018这款IDE。

    首先在pycharm中配置一下virtualenv环境,virtualenv是一个创建独立Python运行环境的工具,为一个应用创建一套“隔离”的Python运行环境。

    创建new project时选择创建新的环境,修改你们自己的目录,如果主机内有多个版本的python解释器可自行选择

    创建完成后可以在项目中安装requests库,file-settings打开如下界面

    单击右上角绿色加号,搜索requests并install

    这里如果你的pip版本大于等于10,安装的时候会报错,原因是由于新版pip的函数发生了变化,解决办法参考这个帖子

    【Python】【亲测好用】安装第三方包报错:AttributeError:'module' object has no attribute 'main'

    0x01  使用requests


    请求方法

      • GET:     查看资源
      • POST:             增加资源
      • PUT:     修改资源
      • DELETE:         删除资源
      • HEAD:             查看响应头
      • patch:              局部更新url资源

     基本用法:requests.[methon](url)

    import requests
    
    response = requests.get('https://www.cnblogs.com/Ragd0ll/p/10176258.html')
    print(response.status_code)  # 打印状态码
    print(response.url)          # 打印请求url
    print(response.headers)      # 打印头信息
    print(response.cookies)      # 打印cookie信息
    print(response.text)  #以文本形式打印网页源码
    print(response.content) #以字节流形式打印

    request的可选参数

    1.param

    2.data

    3.json

    4.headers

    5.cookies、auth

    6.files

    7.timeout

    8.proxies

    9.allow_redirects、stream、verify、cert

    带参数的get请求:

    第一种直接将参数放在url内

    import requests
    
    response = requests.get(http://httpbin.org/get?name=gemey&age=22)
    print(response.text)

    第二种是将参数放入字典,然后在请求时给params参数赋值

    import requests
    
    data = {
        'name': 'tom',
        'age': 20
    }
    
    response = requests.get('http://httpbin.org/get', params=data)
    print(response.text)

    两段代码的结果相同

    基本POST请求:

    import requests
    
    data = {'name':'tom','age':'22'}
    
    response = requests.post('http://httpbin.org/post', data=data)

    简单保存一个二进制文件

    import requests
    
    response = requests.get('https://img2018.cnblogs.com/blog/1342178/201812/1342178-20181225201042109-1353349536.png')
    b = response.content
    with open('F://fengjing.jpg','wb') as f:
        f.write(b)

    为你的请求添加头信息

    import requests
    heads = {}
    heads['User-Agent'] = 'Mozilla/5.0 ' 
                              '(Macintosh; U; Intel Mac OS X 10_6_8; en-us) AppleWebKit/534.50 ' 
                              '(KHTML, like Gecko) Version/5.1 Safari/534.50'
     response = requests.get('https://home.cnblogs.com/u/Ragd0ll/',headers=headers)

    获取cookie

    import requests
    
    response = requests.get('https://home.cnblogs.com/u/Ragd0ll/')
    print(response.cookies)
    print(type(response.cookies))
    for k,v in response.cookies.items():
        print(k+':'+v)

    会话维持

    import requests
    
    session = requests.Session()
    session.get('http://httpbin.org/cookies/set/number/12345')
    response = session.get('http://httpbin.org/cookies')
    print(response.text)

    证书验证设置

    import requests
    from requests.packages import urllib3
    
    urllib3.disable_warnings()  #从urllib3中消除警告
    response = requests.get('https://www.12306.cn',verify=False)  #证书验证设为FALSE
    print(response.status_code)

    超时异常捕获

    import requests
    from requests.exceptions import ReadTimeout
    
    try:
        res = requests.get('http://httpbin.org', timeout=0.1)
        print(res.status_code)
    except ReadTimeout:
        print(timeout)

    异常处理

    import requests
    from requests.exceptions import ReadTimeout,HTTPError,RequestException
    
    try:
        response = requests.get('http://www.baidu.com',timeout=0.5)
        print(response.status_code)
    except ReadTimeout:
        print('timeout')
    except HTTPError:
        print('httperror')
    except RequestException:
        print('reqerror')

     Response的方法

  • 相关阅读:
    无聊死了,救我
    人间奇事:什么都涨,就工资不涨
    关于Javascript Hijacking
    参考答案:关注成本和投资回报率
    IE中一个值得关注的JS问题
    100%高度的div(转载)
    维基百科开放拉
    乱弹:出名、中医、程序
    Javascript的for...in语句在IE和Firefox的差异
    真实案例:给所有想要创业的朋友的一个管理方面的测试题
  • 原文地址:https://www.cnblogs.com/Ragd0ll/p/10226382.html
Copyright © 2011-2022 走看看