Python スパイダー入門:動画のダウンロード
ティックトックのブロガーが言っていた「スパイダー」とは、実際にはコードを使って動画をダウンロードすることで、手動で右クリックして保存するよりも速いのです。
第一歩:ツールのインストール
ターミナル(CMD / Terminal)を開き、以下の行を貼り付けてエンターを押してください:
pip install requests
Successfully installed requests が表示されたら、インストールが完了です。
pipは Python のインストールツールで、requestsはダウンロードを助けてくれるライブラリです。
第二歩:新しい Python ファイルを作成
メモ帳やVS Codeを開き、download.py という名前の新しいファイルを作成してください。
第三歩:Python に requests を使用するように指示する
download.py に以下の行を書いてください:
import requests
この行の意味は、「requests というツールを使用する」ということです。
第四步:動画のURLを準備する
url = "https://example.com/video.mp4"
動画の直接リンクを
urlという変数に保存してください。urlは任意の名前で構いません。video_urlという名前にしてもかまいません。=は「右側の値を左側の変数に保存する」という意味です。
第五步:動画をダウンロードする
resp = requests.get(url)
requests.get(url)は、「このURLにリクエストを送信して動画データを取得する」という意味です。取得したデータを
respという変数に保存します。respは「レスポンス(response)」の略です。
第六步:ファイルに保存する
with open("video.mp4", "wb") as f:
f.write(resp.content)
第一行の
open("video.mp4", "wb"):video.mp4 という名前のファイルを開きます。wbは「バイナリ書き込みモードで」という意味です。
as f:開いたファイルを「f」という名前で保存します。これは後で使いやすいためです。二行目の
f.write(resp.content):動画データ(resp.content)をファイル(f)に書き込みます。
resp.contentが動画の元のデータで、ブラウザで右クリックして保存したものと全く同じです。
第七步:偽装ヘッダーを追加する(ブロック防止)
一部のウェブサイトでは、ユーザーがブラウザではないと判断してダウンロードを拒否することがあります。そのため、偽装ヘッダーを追加します:
headers = {"User-Agent": "Mozilla/5.0"}
そして、ダウンロードの行を以下のように変更してください:
resp = requests.get(url, headers=headers)
headersはリクエストヘッダーで、サーバーに「私はブラウザです」と伝えます。User-Agentはブラウザの名前です。これを追加しないと、サーバーは「Python」と認識してデータを提供しないかもしれません。
第八步:ファイル名を自動で取得する
filename = url.split("/")[-1]
url.split("/"):URL を/に従って複数の部分に分割します。例えば["https:", "", "example.com", "video.mp4"]のように。
[-1]:最後の部分を取り出します。これがvideo.mp4です。このようにすることで、動画の名前が何であっても自動的に取得できます。
完全なコード
上記のコードを組み合わせると、download.py には以下のようなコードが完成します:
import requests
url = "https://example.com/video.mp4"
headers = {"User-Agent": "Mozilla/5.0"}
resp = requests.get(url, headers=headers)
filename = url.split("/")[-1]
with open(filename, "wb") as f:
f.write(resp.content)
print("下载完成:" + filename)
実行
python download.py
現在のディレクトリにダウンロードされた動画ファイルが表示されます。
まとめ
| コード | 機能 |
|---|---|
import requests | ダウンロードツールをインポートする |
url = "..." | 動画のURL |
headers = {"User-Agent": "..."} | ブラウザに偽装する |
resp = requests.get(url, headers=headers) | 動画をダウンロードする |
resp.content | 動画のバイナルデータ |
open("文件名", "wb") | ファイルを作成する |
f.write(resp.content) | データを書き込む |
スパイダーの仕組み:リンクを取得 → ダウンロード → 保存。これだけです。