python如何加速下载ZiP文件

Python014

python如何加速下载ZiP文件,第1张

想要加速zip文件的下载,就必须要用到python的多线程处理能力,常用的库是 threading。默认情况下,该库Python会默认安装,因此可以直接在代码中导入。

下载时根据文件的size,切分成几个线程分别下载文件,下载完成以后再拼接到一起。

Python的下载速度可能受到网络、计算机性能和其他因素的影响。您可以尝试使用多线程下载,以加快下载速度,此外,如果您只是想将Python安装到Mac上,可以下载Homebrew进行安装,这是Mac OS X上最常用的包管理器。

"""

@author: wangxingchun

多线程(线程池)

下载数据

"""

import requests

import csv

from concurrent.futures import ThreadPoolExecutor as tp

#创建一个csv文件,注意创建writer对象"csv.writer()"

f = open('xinfadi.csv','w',encoding='utf8')

csvwrite = csv.writer(f)

#如果写入txt文件,不需要创建writer对象。

# f = open('xinfadidata.txt','w',encoding='utf8')

#创建一个函数,以页码做为参数

def down(n_page):

url = 'http://www.xinfadi.com.cn/getPriceData.html'

data = {'count': 428225,'current': n_page,'limit': 20}

resp = requests.post(url,data=data)

datas =resp.json()

#通过分析数据嵌套情况,获取数据。此处可在网页开发工具json数据中查看分析。

for i in range(len(datas['list'])):

name = datas['list'][i]['prodName']

highPrice = datas['list'][i]['highPrice']

lowPrice = datas['list'][i]['lowPrice']

pubDate = datas['list'][i]['pubDate']

place = datas['list'][i]['place']

csvwrite.writerow((name,highPrice,lowPrice,pubDate,place))#writerow要求写入的是可迭代对象

# f.writelines(f'{name},{highPrice},{lowPrice},{pubDate},{place} ')

resp.close()

if __name__ == '__main__':

with tp(50) as t: #创建线程池,

for n in range(1,101): #遍历数据网页

t.submit(down,n) #提交给线程池,进行多线程下载

print(f'共{n}页数据下载完毕!')

f.close()