2014-11-02 90 views
0

Heyo,trynna從網站下載圖像。我已經設置了一個基本的過濾器,但它的工作正常,但我的目標是自動執行此操作,其中一個步驟是不斷重新下載該網站。我使用wget來做到這一點,從終端工作正常,但似乎os.system()在python創建它自己的(不能想到名稱atm)'終端',這意味着我不能使用的東西,我'已經安裝了,比如wget。我試過GNOME終端,但我可能做錯了什麼:/任何其他解決方案將不勝感激,謝謝!從python執行wget

+1

您是否嘗試指定wget的完整路徑。你可以用'which哪個wget'找到路徑。如果你發佈你的代碼,這將有所幫助。 – tobltobs 2014-11-02 23:07:03

+0

爲什麼不只是使用一個HTML庫下載圖像? – 2014-11-02 23:21:53

回答

1

你爲什麼試圖通過從終端調用wget來下載網站? 我想一個更好的主意是下載一個網站蟒蛇方式:

import sys 
import os 
import urllib.error 
import urllib.request 

def get_raw_webpage(url): 
    """ 
     Download a web url as raw bytes 
    """ 
    try: 
     req = urllib.request.Request(url) 
     response = urllib.request.urlopen(req) 
     data = response.read() 
     return data 

    except urllib.error.HTTPError as e: 
     print('HTTPError: ', e.code , file = sys.stderr) 
     return None 

    except urllib.error.URLError as e: 
     print('URLError: ', e.args, file = sys.stderr) 
     return None 

    except ValueError as e: 
     print('Invalid url.', e.args, file = sys.stderr) 

    return None 


def get_webpage(url): 
    """ 
    Get webpage as raw bytes and then 
    convert to readable form 
    """ 
    data = get_raw_webpage(url) 
    if data == None: 
     return None 

    return data.decode('utf-8') 

您還可以使用get_raw_webpage功能並鏈接到的圖像來下載吧!

+0

感謝您的回答,代碼效果很好。你提到能夠使用get_raw_webpage函數下載圖像?是否有可能獲得更多的細節?謝謝! – Andy 2014-11-03 03:06:15

+0

是的,get_raw_webpage實際上會將任何鏈接點指定爲原始字節數據,因此,如果您給它一個圖像/聲音或w/e文件的鏈接,然後將該數據保存爲二進制文件,則您已下載圖像/音/不管。 – 2014-11-03 10:54:26

+0

謝謝堆!玩過它,並得到它完美的工作。 – Andy 2014-11-03 22:46:23