有没有办法提高Python上的url下载速度?
我有一个用 VB6 编写的程序,无需尝试即可使用 Python。我已经转换了这个东西,现在正在尝试,Python(linux)中的东西似乎慢得多,时间是原来的两倍。即使是该程序的初始版本似乎也比我在 Windows 上习惯的时间要长。
我尝试过同时使用urllib
(2.7), urllib.request
(3.3),以及requests
。目前我正在尝试urllib3
而且速度也没有更快。在 Windows 上通常需要 45 分钟才能在同一台计算机上通过相同的 Internet 连接完成相同的任务,在 Linux 上则需要近 2 个小时。任务只是搜索互联网并在搜索找到所需内容时下载文件......只是一系列潜在的文件名。
我还会问,因为今天下午到目前为止已经发生了不止一次,我该如何检测 110 错误代码(连接超时)。我下面使用的不起作用,它仍然杀死了程序。
import urllib3
http = urllib3.PoolManager()
def dl_10(self):
self.NxtNum10 = int(self.HiStr10)
while self.NxtNum10 < int(self.HiStr10)+9999:
url = 'http://www.example.com/videos/encoded/'+str(self.NxtNum10)+'.mp4'
r = http.request('GET', url)
if r.status==404:
self.NxtNum10 +=1
continue
elif r.status==110:
continue
else:
urllib.request.urlretrieve(url,str(self.NxtNum10)+'_1.mp4')
statinfo = os.stat(str(self.NxtNum10)+'_1.mp4')
if statinfo.st_size<10000:
os.remove(str(self.NxtNum10)+'_1.mp4')
else:
self.End10 = self.NxtNum10
self.NxtNum10 +=1
self.counter +=1
self.NxtNum10 = 'FINISHED'
这是通过线程运行的,我认为这不会有任何区别。就像我说的,使用 urllib(2.7) 的初始写入也很慢,而且它没有使用线程,我只是运行该程序 10 次,就像我在 Windows 上一直运行的那样。
有没有更快的方法可以用Python从互联网上获取资料?
我发现使用下面的方法而不是直接使用 urlretrieve 会快得多:
resp = urllib2.urlopen(url)
respHtml = resp.read()
binfile = open(filename, "wb")
binfile.write(respHtml)
binfile.close()
直接写入文件。希望对你有帮助
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)