2016-11-19 68 views
0

我想通過我的腳本訪問以下link並下載出現的圖表。用urllib.urlretrieve()保存圖像

我用的是接受響應here實現它,但是當我嘗試打開該文件時,我得到錯誤:The file 「test.png」 could not be opened because it is empty.

這裏是我的代碼片段:

import urllib 
image_element = driver.find_element_by_id('chartImg') 
src = image_element.get_attribute("src") 
if src: 
    urllib.urlretrieve(str(src), "test.png") 

接下來,我想進一步調試並改變了我的代碼

if src: 
    a, b = urllib.urlretrieve(str(src), "test.png") 
    print a, b.items() 

這給了我下面的輸出:

test.png 
[('date', 'Sat, 19 Nov 2016 01:19:20 GMT'), ('connection', 'Keep-Alive'), ('content-length', '0'), ('server', 'BigIP')] 

有誰知道爲什麼'content-length'是'0'?我認爲這是下載文件爲空的原因。

回答

1

我發現周圍的工作...採取截圖

image_element = driver.find_element_by_id('chartImg') 
    src = image_element.get_attribute("src") 
    if src: 
     driver.get(src) 
     driver.save_screenshot('screen.png') 

不知道是否有更好的辦法,但這樣做的工作

1

我認爲這是因爲您正在抓取的圖像不包含擴展名。如果你運行這個代碼,例如:

src = "http://i.imgur.com/2C7Csq6.png" 
urllib.urlretrieve(src, "test.png") 

PNG文件的工作原理,它是完全相同的圖像。我試圖尋找方法來做到這一點,而不必上傳到圖像共享服務,它將提供一個擴展,但沒有找到任何東西。我也嘗試將.png添加到原始src字符串中,但這也不起作用。我的猜測是這是一個網站特定的問題。希望你能找到解決方法,祝你好運!

+0

感謝,我同意,它將與任何圖像工作擴展名(* .png,* .jpeg),但在這種情況下,由於圖像沒有擴展名,我正在尋找任何可能的提示 – user1596115