Python urllib同时镜像和存储http状态

Python urllib同时镜像和存储http状态,python,python-2.7,python-requests,urllib,mirror,Python,Python 2.7,Python Requests,Urllib,Mirror,我非常喜欢urllib模块,我使用它通过Python2.7进行大规模、持续的数据检索。就像这样 import urllib urllib.urlretrieve("http://www.example.com/mirror_me.txt","mirror_me.txt") 我正在镜像的服务有非常严格的规则,规定我可以多久访问一次他们的服务。当我点击时,几乎总是200的响应,但偶尔我需要注意404,因为他们的端部有时有一个错误的过程 我知道我可以通过这种方式检查响应代码 a=urllib.url

我非常喜欢urllib模块,我使用它通过Python2.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
的响应是一个类似文件的对象,可以
读取

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

urlib
已被弃用,但应移至
urlib2
。上述代码在
urllib2
中也同样适用。

问题在于如何使用urllib实现这一点。这不是答案。那么为什么包含requests标签呢?除此之外,您的答案是关于urllib2,而不是urllib。