2014-11-02 91 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