Pythonのクロールとm3u8ビデオのダウンロードはとても簡単です!

1はじめに

この記事のテキストと写真はインターネットからのものであり、学習とコミュニケーションのみを目的としており、商用目的ではありません。ご不明な点がございましたら、処理についてお問い合わせください。

PS:Pythonの学習教材が必要な場合は、以下のリンクをクリックして自分で入手できます

Pythonの無料の学習資料、コード、交換回答クリックして参加


ビデオをクロールすると、現在のビデオが暗号化され(m3u8)、mp4またはaviリンクがWebページに直接表示されなくなり、すべて暗号化されて再生用のtsファイルセグメントが形成されることがわかりました。

今日は、Pythonクロールを介してm3u8暗号化ビデオをダウンロードする方法をお教えします。

2.Webページを分析します

1.映画のビデオソース


http://www.caisetv.com/

2.m3u8暗号化ディレクトリを分析します


http://www.caisetv.com/dongzuopian/chaidanzhuanjia/0-1.html

 

ビデオ再生ページでは、F12を介してネットワークデータパケットを表示できます


https://xigua-cdn.haima-zuida.com/20210219/19948_fcbc225a/1000k/hls/index.m3u8

 

ここのtsは、映画の暗号化されたセグメント化されたビデオです


https://xigua-cdn.haima-zuida.com/20210219/19948_fcbc225a/1000k/hls/

上記のindex.m3u8をm3u8にリンクした後、075a34cccdd000000.tsなどのts名を入力すると、セグメント化されたビデオへのリンクになります。

次のように:


https://xigua-cdn.haima-zuida.com/20210219/19948_fcbc225a/1000k/hls/075a34cccdd000000.ts

このセグメント化されたビデオをブラウザからダウンロードして開きます。

 

 

したがって、すべてのtsをダウンロードしてマージするだけで、ムービービデオが完成します。

3.tsをダウンロードします

1.tsセグメント化されたビデオをダウンロードします

tsの名前をすべてダウンロードしました

 

 

次に、Pythonコードでこのファイルを読み取り、名前を抽出し、リンクを接続した後、リンクをダウンロードしてフォルダーに保存します。


headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; Win64; x64; rv:84.0) Gecko/20100101 Firefox/84.0',}

###下载ts文件
def download(url,name):
    r = requests.get(url, headers=headers)
    with open(name+"", "wb") as code:
        code.write(r.content)

with open("index.m3u8","r") as f:
    ts_list = f.readlines()

#去掉前面没用的信息
ts_list = ts_list[5:]
urlheader="https://xigua-cdn.haima-zuida.com/20210219/19948_fcbc225a/1000k/hls/"
count = 0
for i in ts_list:
    if "#" not in i:
        i = i.replace("\n","")
        download(urlheader+""+i,"cdzj2/"+str(count)+".ts")
        count = count+1
        print(count)

 

このようにして、すべてのtsファイルをダウンロードできますが、1つずつダウンロードするのは非常に時間がかかります。以下では、ダウンロード速度を向上させるために、複数のスレッドからダウンロードしてください。

2.複数のスレッドでtsビデオをダウンロードします


for i in ts_list:
    if "#" not in i:
        i = i.replace("\n","")
        n = i[-7:]
        threading.Thread(target=download, args=(urlheader+""+i,"cdzj2/"+str(n),)).start()
        #download(urlheader+""+i,"cdzj2/"+str(count)+".ts")

 

これらのtsファイルは、マルチスレッドを介してローカルにすばやくダウンロードできます。

4.tsをマージします

cmdマージファイル


copy /b   *.ts   new.mp4

このコマンド(cmdターミナルで実行)を使用すると、tsファイルを含むフォルダー内のtsファイルをマージし(名前の順に並べてマージします)、new.mp4として保存できます。

 

5.まとめ

1. M3U8暗号化されたファイルを分析
2. PythonのダウンロードのTSファイル
3. MP4形式にCMDマージTSをし、それらの保存

おすすめ

転載: blog.csdn.net/pythonxuexi123/article/details/114635232