日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python requests下载超大文件/批量下载文件

發布時間:2023/12/20 python 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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下载超大文件/批量下载文件的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。