zoukankan      html  css  js  c++  java
  • Python常用库Requests网络请求

    场景

    Python 应用场景非常广泛,大数据、爬虫、人工智能等,常见的热门领域都离不开这个家伙,今天又来说说 Python 常用的库之一「Requests」,只要是与网络相关的的操作,都离不开这个库。RESTful 常见的增删改查「CRUD」都用这个可以实现。
    基础的操作有,请求一个页面,获取「get」网页内容。

    >>> r = requests.get('https://google.cn') # get
    >>> r
    <Response [200]> # HTTP 响应200
    >>> r.headers['content-type'] # 网页类型
    'text/html'
    >>> r.encoding # 正在使用的编码
    'ISO-8859-1
    

    #基础用法
    上面这个是最简单的,不需要上面认证、服务器认证代理、请求内容、定制头等,比如带上请求数据,把需要的数据封装为字典,然后用 params 带入即可。

    # 在浏览器访问的网址是
    # https://google.cn/get?key2=value2&key1=value1
    # 用 Requests 来访问
    >>> payload = {'key1': 'value1', 'key2': 'value2'}
    >>> r = requests.get('https://google.cn/get', params=payload)
    

    对返回的内容还可以解析,有一个内置的 JSON 解码器,不过是针对一个返回的是一个字典,如果是多个字典的话,有报错异常提示。

    >>> import requests
    >>> r = requests.get('https://google.cn/events')
    >>> r.json()
    [{u'repository': {u'open_issues': 0, u'url': 'https://google.cn/...
    

    如果JSON解码失败,则 r.json() 引发异常。例如,如果响应获得 204(无内容),或者响应包含无效的 JSON ,则尝试 r.json() 引发。

    ValueError: No JSON object could be decoded
    

    自定义 header 内容

    >>> headers = {'user-agent': 'my-app/0.0.1'}
    >>> r = requests.get(url, headers=headers)
    

    对于 POST 的请求,则需要带上 data

    >>> payload = {'key1': 'value1', 'key2': 'value2'}
    >>> r = requests.post("https://google.cn/post", data=payload)
    

    在爬取数据的时候,有时候会遇到网站是用 cookies 来访问的,这个时候需要认证,获取到 cookies,然后带上参数 cookies 即可访问。

    >>> url = 'https://google.cn/cookies'
    >>> cookies = dict(cookies_are='working')
    >>> r = requests.get(url, cookies=cookies)
    

    还有一些网站反「爬」机制的,会加上多个路径的 cookies,就可以用到

    >>> 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 = 'https://google.cn/cookies'
    >>> r = requests.get(url, cookies=jar)
    

    注意

    应当指出的是,呼叫的成功 r.json() 并不能 表明响应成功。某些服务器可能会在失败的响应中返回 JSON 对象(例如,HTTP 500的错误详细信息)。这样的JSON将被解码并返回。要检查请求是否成功,请使用 r.raise_for_status() 或检查r.status_code 您的期望。

    小结

    Requests 一个强大的网络应用库,在了解了上面的知识后,可以用来爬爬数据,比如豆瓣、知乎、以及公众号的数据,行动起来吧,网上也有很多类似的教程,可以跟着多动手,实战一番。


    作者:叉叉敌
    博客:https://chasays.github.io/
    微信公众号:Chasays, 欢迎关注一起吹牛逼,也可以加个人微信号「xxd_0225」互吹。
    本博客大多为学习笔记或读书笔记,本文如对您有帮助,还请多推荐下此文,如有错误欢迎指正,相互学习,共同进步。

  • 相关阅读:
    2019北航软工暑期班作业-IDE的安装与初步使用(Visual Studio版)
    java——线性表接口实现
    CCF——相邻数对201409-1
    CCF——门禁系统201412-1
    CCF——图像旋转201503-1
    CCF——数列分段201509-1
    CCF——数位之和201512-1
    CCF——折点计数201604-1
    Java String简单知识点总结
    無题
  • 原文地址:https://www.cnblogs.com/ievjai/p/14382714.html
Copyright © 2011-2022 走看看