urllib 同时镜像和存储http状态

urllib to mirror and store http status simultaneously

我喜欢 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

请求满足您的需求。

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....')

来自 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 中也同样有效。