美文网首页
爬虫进阶《requests 模块学习》

爬虫进阶《requests 模块学习》

作者: uuu0 | 来源:发表于2018-03-23 19:59 被阅读25次

    使用 Requests 发送网络请求非常简单。

    一开始要导入 Requests 模块:

    import requests
    

    然后,尝试获取某个网页

    r = requests.get('https://github.com/timeline.json')
    

    现在,我们有一个名为 rResponse 对象。我们可以从这个对象中获取所有我们想要的信息。

    Requests 简便的 API 意味着所有 HTTP 请求类型都是显而易见的。例如,你可以这样发送一个 HTTP POST 请求:

    r = requests.post("http://httpbin.org/post")
    

    put delete head都相似

    >>> r = requests.put("http://httpbin.org/put")
    >>> r = requests.delete("http://httpbin.org/delete")
    >>> r = requests.head("http://httpbin.org/get")
    >>> r = requests.options("http://httpbin.org/get")
    

    服务器响应内容

    import requests
    r = requests.get('https://movie.douban.com/review/best')
    r.text
    
    图片.png

    Requests 会自动解码来自服务器的内容。大多数 unicode 字符集都能被无缝地解码。
    不需要像urlli.request模块使用的时候 需要将utf-8转码 在requests 模块中使用r.txt
    自动转码

    定制请求头

    如果你想为请求添加 HTTP 头部,只要简单地传递一个 dict 给 headers 参数就可以了。

    例如,在前一个示例中我们没有指定 content-type:

    url = 'https://movie.douban.com/review/best/'
    headers = {'user-agent': 'my-app/0.0.1'}
    r = requests.get(url, headers=headers)
    

    注意: 定制 header 的优先级低于某些特定的信息源,例如:

    如果在 .netrc 中设置了用户认证信息,使用 headers= 设置的授权就不会生效。而如果设置了 auth= 参数,.netrc 的设置就无效了。
    如果被重定向到别的主机,授权 header 就会被删除。
    代理授权 header 会被 URL 中提供的代理身份覆盖掉。
    在我们能判断内容长度的情况下,header 的 Content-Length 会被改写。
    更进一步讲,Requests 不会基于定制 header 的具体情况改变自己的行为。只不过在最后的请求中,所有的 header 信息都会被传递进去。

    注意: 所有的 header 值必须是 string、bytestring 或者 unicode。尽管传递 unicode header 也是允许的,但不建议这样做。

    相关文章

      网友评论

          本文标题:爬虫进阶《requests 模块学习》

          本文链接:https://www.haomeiwen.com/subject/jdjqqftx.html