我想實現類似於此的功能http://www.tineye.com/parse?url=yahoo.com - 允許用戶從任何網頁上傳圖像。從網頁上傳圖片
對我來說主要的問題是大量圖像的網頁需要花費太多時間。
我(使用捲曲或urllib的)根據未來計劃在Django這樣做:頁面
抓鬥HTML(花費大網頁約1秒):
file = urllib.urlopen(requested_url) html_string = file.read()
使用HTML解析器(BeautifulSoup)解析它,查找img標籤,並將所有src圖像寫入列表。 (大頁面也需要大約1秒)
檢查我列表中所有圖像的大小,如果它們足夠大,則返回它們的json響應(需要非常長的時間約15秒,當圖像上有大約80個圖像時網頁)。下面是函數的代碼:
def get_image_size(uri):
file = urllib.urlopen(uri)
p = ImageFile.Parser()
data = file.read(1024)
if not data:
return None
p.feed(data)
if p.image:
return p.image.size
file.close()
#not an image
return None
正如你所看到的,我不加載完整的圖像來獲得它的大小,只有它的1KB。但是當有很多圖像時(我爲每個找到的圖像調用一次這個函數),它仍然需要太多時間。
那麼我該如何讓它工作得更快?
可能有沒有辦法對每張圖片做出請求?
任何幫助將不勝感激。
謝謝!
什麼只是檢查在HTTP響應內容長度? – tmg 2011-04-09 19:22:36
是的,我考慮過它,但是我想只顯示取決於寬度和高度的圖像(例如寬度或高度超過100像素),並且僅知道內容長度很難做到。 – 2011-04-09 22:00:17