2017-05-05 23 views
0

我崇拜的urllib模块和I将其用于与Python 2.7数据的海量,恒定检索。像这样......的urllib镜像和存储HTTP状态同时

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

回答

0

要求做你所需要的。

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

现在的问题是如何与urllib的做到这一点。这不是一个答案。 – danny

+1

那么为什么包含请求标记? – misantroop

+0

最重要的是,你的答案被谈论的urllib2,不是的urllib。 – misantroop

0

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中也是一样的。