該方法爲下載網頁上的視頻
通常情況下,視頻網站的視頻不是一個整文件,而是成百上千個 ts流 文件
我們獲取第一個名爲“*****0001.ts”的文件地址,以及最後一個的地址,就可以用 Python 下載
按下 F12 ,選擇 Network,就可以找到不斷產生的ts文件
找到編號的第一個,右鍵獲取地址,修改代碼中的 url 地址,注意最後的 “%04d” 要根據實際情況修改,作用時將整數變爲字符類型(前補零)
修改文件下載的地址,我默認是 H:/PyDownload/ 注意,地址一定要是現存的,程序不會自動建立不存在的目錄
修改線程數,根據電腦內存的大小進行修改,一般100線程就可以將網速佔滿
最後,修改個數 range()
建議下載完成後自己進行合併,用的是 cmd 中的 copy 命令
copy /b *.ts new.mp4
import requests
import os
import time
from multiprocessing import Pool
def run(i):
url = 'https://dapian.video-yongjiu.com/20190917/12948_614ba440/1000k/hls/e6f33517ce300%04d.ts'%i
print("開始下載:"+url)
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.92 Safari/537.36"}
r = requests.get(url, headers = headers,stream=True,timeout=600)
# print(r.content)
with open('H:/PyDownload/{}'.format(url[-7:]),'wb') as f:
f.write(r.content)
f.close()
def merge(t,cmd):
time.sleep(t)
res=os.popen(cmd)
print(res.read())
if __name__ == '__main__':
# 創建進程池,執行10個任務
pool = Pool(32)
for i in range(500):
pool.apply_async(run, (i,)) #執行任務
pool.close()
pool.join()
#調用合併
# merge(5,"copy /b H:\\PyDownload\\*.ts H:\\PyDownload\\new.mp4")
print('ok!處理完成')
``