• Requests文档 阅读笔记


    Request库

    Requests is an elegant and simple HTTP library for Python, built for human beings.

    Request库是日常中经常使用的库,总结一下吧。附上文档Requests: 让 HTTP 服务人类

    发送请求

    #使用requests库前都要导入requests库
    import requests     
    
    #发送GET,POST,PUT,DELETE,HEAD 以及 OPTIONS 请求
    r = requests.get('https://www.cnblogs.com/thenbz3/')
    r = requests.post('https://www.cnblogs.com/thenbz3/')
    r = requests.put('https://www.cnblogs.com/thenbz3/')
    r = requests.delete('https://www.cnblogs.com/thenbz3/')
    r = requests.head('https://www.cnblogs.com/thenbz3/')
    r = requests.options('https://www.cnblogs.com/thenbz3/')
    

    传递URL参数

    #GET请求时传递参数
    payload = {'key1':'value1', 'key2':'value2', 'key3' : ['value3','valua4']}
    r = requests.get('http://httpbin.org/get', params = payload)
    print(r.url)
    
    #相当于
    r = requests.get('http://httpbin.org/get?key1=value1&key2=value2&key3=value3&key3=value4')
    

    更加复杂的POST请求

    #POST请求时传递参数
    import requests
    
    payload = {'key1' : 'value1', 'key2' : 'value2'}
    r = requests.post('http://httpbin.org/post', data = payload)
    
    #或者用元组列表
    paylaod = (('key1', 'value1'),('key1', 'value2'))
    r = requests.post('http://httpbin.org/post', data = payload)
    

    响应内容

    #以GET请求举例,会以html代码形式返回页面的内容
    import requests 
    
    url = 'https://www.cnblogs.com/thenbz3/'
    r = request.get(url)
    html = t.text
    print(html)
    print(r.encoding)
    
    #还可以更改返回页面内容的编码
    r.encoding = 'utf-8' 
    print(r.encoding)
    
    
    # 响应状态码
    r.status_code
    r.status_code == requests.codes.ok   #内置状态码查询对象
    r.raise_for_status()                 #抛出异常,无异常返回None
    print(r)
    
    

    定制请求头

    import requests
    
    url = 'https://www.cnblogs.com/thenbz3/'
    headers = {'user-agent' : 'my-app/o.o1'}
    r=request.get(url,headers = headers)
    
    r.cookies['cookie的键名']
    
    #发送请求时带cookie
    url = 'http://httpbin.org/cookies'
    cookies = dict(cookies_are='working')
    r = requests.get(url, cookies=cookies)
    
    #Cookie Jar
    jar = requests.cookies.RequestsCookieJar()
    jar.set('tasty_cookie', 'yum', domain='httpbin.org', path='/cookies')
    jar.set('gross_cookie', 'blech', domain='httpbin.org', path='/elsewhere')
    url = 'http://httpbin.org/cookies'
    r = requests.get(url, cookies=jar)
    r.text
    
    '{"cookies": {"tasty_cookie": "yum"}}'
    

    重定向

    #allow_redirects=False  禁用重定向
    r = requests.get('http://github.com', allow_redirects=False)
    
    

    会话对象Session

    #会保持同一个cookie,和某些参数,在编写脚本的时候如果没有特殊要求,最好用session
    import requests
    
    s = requests.session()
    
    s.get('http://httpbin.org/cookies/set/sessioncookie/123456789')
    r = s.get("http://httpbin.org/cookies")
    
    print(r.text)
    # '{"cookies": {"sessioncookie": "123456789"}}'
    
    
    #不过需要注意,就算使用了会话,方法级别的参数也不会被跨请求保持。下面的例子只会和第一个请求发送 cookie ,而非第二个
    r = s.get('http://httpbin.org/cookies', cookies={'from-my': 'browser'})
    print(r.text)
    # '{"cookies": {"from-my": "browser"}}'
    
    r = s.get('http://httpbin.org/cookies')
    print(r.text)
    # '{"cookies": {}}'
    
    
  • 相关阅读:
    Navigator对象关于语言的属性
    对ng-repeat的表格内容添加不同样式:ng-style
    ng-repeat
    ES 6 : 函数的扩展
    二维码下载,区分是 ios 和 android
    gulp配置备份
    [转]移动端web页面使用字体的思考
    移动开发总结
    前端优化:雅虎35条
    input填写银行卡号,每四位空一隔
  • 原文地址:https://www.cnblogs.com/thenbz3/p/11453497.html
Copyright © 2020-2023  润新知