wget与python的urlretrieve

Kap*_*l D 9 python wget urllib2

我有一项任务是从网站下载Gbs数据.数据采用.gz文件格式,每个文件大小为45mb.

获取文件的简单方法是使用"wget -r -np -A files url".这将以递归格式下载数据并镜像网站.下载率非常高,每秒4mb.

但是,只是为了玩,我也使用python来构建我的urlparser.

通过Python的urlretrieve下载速度很慢,可能比wget慢4倍.下载速率为500kb /秒.我使用HTMLParser来解析href标签.

我不知道为什么会这样.有没有任何设置.

谢谢

Tri*_*ych 40

可能是您的单位数学错误.

只注意500KB/s(千字节)等于4Mb/s(兆位).


Xua*_*uan 9

urllib和wget一样快.试试这段代码.它显示了百分比的进度,就像wget一样.

import sys, urllib
def reporthook(a,b,c): 
    # ',' at the end of the line is important!
    print "% 3.1f%% of %d bytes\r" % (min(100, float(a * b) / c * 100), c),
    #you can also use sys.stdout.write
    #sys.stdout.write("\r% 3.1f%% of %d bytes" 
    #                 % (min(100, float(a * b) / c * 100), c)
    sys.stdout.flush()
for url in sys.argv[1:]:
     i = url.rfind('/')
     file = url[i+1:]
     print url, "->", file
     urllib.urlretrieve(url, file, reporthook)
Run Code Online (Sandbox Code Playgroud)


Cor*_*erg 0

确实不应该有什么区别。urlretrieve 所做的只是发出一个简单的 HTTP GET 请求。您是否拿出数据处理代码并对 wget 与纯 python 进行了直接吞吐量比较?