def downloadFile(folderName, fileUrl): ''' 下载文件 ''' fileName = getFileName(folderName, fileUrl) if os.path.exists(fileName): print('######文件' + fileName + '已下载##############') return # 下载文件 try: # ret = requests.get(url=domain + fileUrl, headers=headers, timeout=30) # ret.encoding = ret.apparent_encoding # # 保存到磁盘 # with open(fileName, 'wb') as fp: # fp.write(ret.content) # print('------文件' + fileName + '下载完成') # 下载文件并显示进度条 with closing( requests.get(url=domain + fileUrl, headers=headers, timeout=30, stream=True)) as response: # 单次请求最大值 chunk_size = 1024 # 内容体总大小 content_size = int(response.headers['content-length']) progress = ProgressBar(fileName, total=content_size, unit='KB', chunk_size=chunk_size, run_status='正在下载', fin_status='下载完成') # 保存到磁盘 with open(fileName, 'wb') as fp: for data in response.iter_content(chunk_size=chunk_size): fp.write(data) progress.refresh(count=len(data)) print('------文件' + fileName + '下载完成') except requests.exceptions.ConnectionError: print('*********************文件' + fileName + '下载失败,正在重新请求**********************') time.sleep(5) downloadFile(folderName, fileUrl)
def downLoadFile(self, url, session, fileDir, fileName): self.createDir(fileDir) header = { 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36' } with closing(session.get(url, headers=header, stream=True)) as response: chunk_size = 1024 # 单次请求最大值 content_size = int(response.headers['content-length']) # 内容体总大小 progress = ProgressBar(fileName, total=content_size, unit="KB", chunk_size=chunk_size, run_status="正在下载", fin_status="下载完成") with open(fileDir + '/' + fileName, "wb") as file: for data in response.iter_content(chunk_size=chunk_size): file.write(data) progress.refresh(count=len(data))
payload['pageNum'] += 1 else: temp = False else: print('request failed!') temp = False sys.exit() albumName = data[0]['albumName'] for item in data: musicArr.append({'src':item['src'], 'name': item['trackName']}) if not os.path.exists(albumName): os.makedirs(albumName) for m in musicArr: if os.path.exists(albumName + '/%s.m4a' % m['name']): continue with closing(requests.get(m['src'], headers=header, stream=True)) as res: chunk_size = 1024 # 单次请求最大值 content_size = int(res.headers['content-length']) # 内容体总大小 progress = ProgressBar(m['name'], total=content_size, unit="KB", chunk_size=chunk_size, run_status="downloading", fin_status="finished") with open(albumName + '/%s.m4a' % m['name'], 'wb') as f: for data in res.iter_content(chunk_size=chunk_size): f.write(data) progress.refresh(count=len(data))