【问题标题】:urllib to mirror and store http status simultaneouslyurllib 同时镜像和存储 http 状态
【发布时间】:2017-05-05 11:14:51
【问题描述】:

我喜欢 urllib 模块,我用它来使用 Python 2.7 进行大量、持续的数据检索。就这样……

import urllib
urllib.urlretrieve("http://www.example.com/mirror_me.txt","mirror_me.txt")

我正在镜像的服务对我可以访问他们的服务的频率有非常严格的规定。当我点击时,它几乎总是 200 响应,但有时我需要注意 404,因为它们有时会出现错误的进程。

我知道我可以通过这种方式检查响应代码...

a=urllib.urlopen('http://www.example.com/mirror_me.txt')
a.getcode()
200

问题是我不知道如何将两者结合起来,所以现在我不得不发送两个效率低下的请求,而且我对他们的服务器的命中率加倍。 理想情况下,我想要以下.....

if 200:
   mirror
elif 404:
   notify me....

也许我的答案不在 urllib 中,但我感谢任何人的指点。 JW

【问题讨论】:

    标签: python python-2.7 python-requests urllib mirror


    【解决方案1】:

    请求满足你的需要。

    import requests
    req = requests.get('http://www.example.com/mirror_me.txt')
    if req.status_code == 200:
        mirror = req.content
    elif req.status_code == 404:
        print('notify me....')
    

    【讨论】:

    • 问题是如何使用 urllib 来做到这一点。这不是答案。
    • 那为什么要包含requests标签呢?
    • 最重要的是,您的回答是在谈论 urllib2,而不是 urllib。
    【解决方案2】:

    来自urlopen 的响应是一个类似文件的对象,可以是read

    a = urllib.urlopen('http://www.example.com/mirror_me.txt')
    code = a.getcode()
    if code == 200:
        data = a.read()
        <..>
    

    urlib 已弃用,但 per docs 应移至 urllib2。上面的代码在urllib2 中也是一样的。

    【讨论】:

      猜你喜欢
      • 2016-10-13
      • 2014-07-05
      • 2021-05-29
      • 2013-08-01
      • 1970-01-01
      • 2019-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多