2013-07-24 41 views
1

http://puu.sh/3Krct.png如何防止下載HTML /文本頁面爲png格式

我的程序生成隨機鏈接到承載圖像的服務,它抓住和下載隨機圖像。該程序提出了很多請求,因此它必須通過代理。那麼,當程序啓動時,我只是給它一個新的大代理列表的路徑;然而,有時代理不會連接到網站,有時他們會返回一個自定義HTML頁面 - 或者圖像服務會在頁面上返回消息「您無權查看此圖像」。雖然,該方案仍然會保存請求,並與巴紐擴展下載頁面

所以有時候那些HTML /文本頁面保存爲.png文件:

http://puu.sh/3KrxM.png

http://puu.sh/3KrGN.png

有什麼辦法可以阻止下載這些頁面,只下載實際的圖片?

謝謝。

if self.proxy != False: 
    #make our requests go through proxy 
    self.opener.retrieve(url, filename) 
else: 
    urllib.request.urlretrieve(url, filename) 
+0

因此,您通過猜測文件名並隱藏在多個代理之後,無法從不屬於您的網站抓取圖片? – msw

+2

這個問題似乎是脫離主題,因爲它是關於黑客行爲。 – msw

+0

@msw圖像是公開的。所以這不是黑客行爲。如果他們想要,他們可以把它變成私人的。 – Justin

回答

0

我想你應該改變邏輯。

如果代理返回一個錯誤,讓你問的網頁,它通常使用一個HTTP狀態代碼= 200

你應該那麼爲了檢查:!

  • HTTP狀態= 200
  • 內容類型正確類型頭返回(在這種情況下,圖像/ JPEG)

而對於這種類型我建議使用requests module任務。

+0

這仍然不能真正幫助這種情況。有時圖片頁面會返回一個純文本頁面,顯示「您無權查看此圖片」。 - 我仍然需要一種方法來防止下載? – Justin

+0

哦,這是真的。那麼你必須檢查內容類型標題。如果returnstatus是200和content-type:image/jpeg那麼沒關係 –

+0

我沒有想到urllib.request.urlretrieve()返回的內容類型?它應該是 – Justin