python下载是非常s

2024-10-01 17:30:06 发布

您现在位置:Python中文网/ 问答频道 /正文

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

我有一个用VB6编写的程序,它可以不经尝试就吸食Python。我已经把它转换了一下,现在正在尝试,在Python(linux)中,速度似乎慢得多,是原来的两倍。即使是这个程序的初始版本,它的运行时间似乎也比我在Windows上习惯的要长。在

我尝试过同时使用urllib(2.7)、urllib.request(3.3)和{}。目前我正在尝试urllib3,而且速度也不快。在Windows上通常需要45分钟,而在linux上,要在同一台计算机上、在同一个internet连接上完成同样的任务,需要将近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)写东西也很慢,而且它没有使用线程,我只是像在Windows上一样运行了10次程序。在

有没有什么更快的方法可以用Python从互联网上抓取东西呢?在


Tags: self程序httpurlrequestlinuxwindows互联网
1条回答
网友
1楼 · 发布于 2024-10-01 17:30:06

我发现,与直接使用urlretrieve相比,使用以下方法要快得多:

resp = urllib2.urlopen(url)
respHtml = resp.read()
binfile = open(filename, "wb")
binfile.write(respHtml)
binfile.close()

写入文件直接。希望它能帮上忙

相关问题 更多 >

    热门问题