python下载非常慢

con*_*sed 5 python

有没有办法提高Python上的url下载速度?

我有一个用VB6编写的程序,它无需尝试就可以吸烟Python。我已经完成了转换,现在正在尝试中,在Python(linux)中,它看起来要慢得多,是它的两倍。甚至该程序的初始版本似乎比在Windows上花费的时间要长。

我试过同时使用urllib(2.7),urllib.request(3.3)和requests。目前,我正在尝试urllib3,而且速度也不快。在Windows上通常需要45分钟,而在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'
Run Code Online (Sandbox Code Playgroud)

这是通过线程运行的,我认为那不会有任何区别。就像我说的那样,使用urllib(2.7)进行的初始写入也很慢,并且没有使用线程,就像我在Windows上一样,我只运行了10次。

有没有使用Python从互联网上抢东西的更快方法?

小智 5

我发现使用下面的方法而不是直接使用 urlretrieve 会快得多:

resp = urllib2.urlopen(url)
respHtml = resp.read()
binfile = open(filename, "wb")
binfile.write(respHtml)
binfile.close()
Run Code Online (Sandbox Code Playgroud)

直接写入文件。希望对你有帮助