Python requests下载超大文件/批量下载文件
生活随笔
收集整理的這篇文章主要介紹了
Python requests下载超大文件/批量下载文件
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
(一)下載超大文件:
使用 python 下載超大文件,直接全部下載,文件過大,可能會造成內存不足,這時候要使用 requests 的 stream 模式
主要代碼如下
iter_content:一塊一塊的遍歷要下載的內容
iter_lines:一行一行的遍歷要下載的內容
def download_file(url, file_pname, chunk_size=1024*4):"""url: file urlfile_pname: file save pathchunk_size: chunk size"""# 第一種response_data_file = requests.get(url, stream=True)with open(file_pname, 'wb') as f:for chunk in response_data_file.iter_content(chunk_size=chunk_size):if chunk:f.write(chunk)# 第二種with requests.get(url, stream=True) as req:with open(file_pname, 'wb') as f:for chunk in req.iter_content(chunk_size=chunk_size):if chunk:f.write(chunk)# 下載大文件 應用實例: def Big_Download(session,url_inquire,headers,form_data):response = session.post(url=url_inquire,data=form_data,headers=headers,verify=False,stream=True)# 獲取文件大小file_size = int(response.headers['content-length'])with tqdm(total=file_size, unit='B', unit_scale=True, unit_divisor=1024, ascii=True, desc='Expense.json') as bar:with session.post(url=url_inquire,data=form_data,headers=headers,verify=False,stream=True) as r:with open('Expense.json', 'wb') as fp:for chunk in r.iter_content(chunk_size=512):if chunk:fp.write(chunk)bar.update(len(chunk))(二)批量下載文件:
#批量文件下載 import requests from bs4 import BeautifulSouparchive_url = "http://www-personal.umich.edu/~csev/books/py4inf/media/" def get_links():r = requests.get(archive_url)soup = BeautifulSoup(r.content, 'html5lib')links = soup.findAll('a')video_links = [archive_url + link['href'] for link in links if link['href'].endswith('mp4')]return video_linksdef download_series(video_links):for link in video_links:file_name = link.split('/')[-1]print("Downloading file:%s" % file_name)r = requests.get(link, stream=True)# download startedwith open(file_name, 'wb') as f:for chunk in r.iter_content(chunk_size=1024 * 1024):if chunk:f.write(chunk)print("%s downloaded!\n" % file_name)print("All videos downloaded!")returnif __name__ == "__main__":video_links = get_links()download_series(video_links)總結
以上是生活随笔為你收集整理的Python requests下载超大文件/批量下载文件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机网络符号意思,浅析网络语言中的符号
- 下一篇: 关于最短剩余时间优先算法-进程调度模拟【