2017-05-05 53 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中也是一樣的。