2013-12-12 57 views
1

我搜索了一下,但沒有得到答案。我試圖使用Python從網站下載一些圖像文件。當網站HTML有圖片的網址,我可以使用類似使用Python下載數據URI

urllib.urlretrieve(pic_url, pic_name) 

但是,當它是一個數據的類似

<img src="data:...."> 

URI我怎樣才能從網站上下載圖像?

預先感謝您!

回答

1

請看這裏http://en.wikipedia.org/wiki/Data_URI_scheme數據實際上都在HTML中。您只需要某種形式的HTML解析器來定位標記,獲取src=的屬性,然後以任何格式解碼數據,通常是base64。

使用維基百科的例子爲紅點PNG:

>>> import base64 
>>> png_data = "iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==" 
>>> with open('/tmp/red.png', 'w') as fp: 
...  fp.write(base64.b64decode()) 
... 

現在,如果你看一下/tmp/red.png它是一個小的,紅點。

考慮類似BeautifulSoup的HTML處理。

+0

謝謝你的迴應。我嘗試使用str.decode('base64','strict')解碼wikipedia示例的「data:image/gif; base64,str」中的字符串。我沒有得到正確的解碼。你能解釋一下你的答案嗎? – user2909590

+0

它的工作原理!非常感謝你! – user2909590