Wgetコマンド完全ガイド — Windowsでの「wget: command not found」を解決

要点(TL;DR)
WgetはGUIなしでファイルをダウンロードする強力なコマンドラインツールです。Windowsで「wget: command not found」が出る場合、まずはインストールとPATH設定を確認します。この記事ではWindows/Mac両方のインストール手順、代表的な使い方、注意点、トラブルシューティング、運用向けのSOPやチェックリストまで網羅的に解説します。
Important: サイトをクロールする前に対象サイトの利用規約とrobots.txtを確認し、サーバー負荷を避けるためにレート制限と待機時間を設定してください。
概要
WgetはHTTP、HTTPS、FTPプロトコルをサポートするコマンドラインのダウンローダーです。GUIが不要で自動化に向いています。単一ファイルのダウンロード、複数URLの処理、再帰的なサイトミラー、User-Agentの偽装、速度制限、再開機能などを備えています。Windowsでは標準で入っていないことが多く、「wget: command not found」エラーの主原因になります。
主な用途(1行定義)
- ファイルダウンロード: URLから直接ファイルを取得する。
- サイトミラー: 再帰オプションでウェブサイトをローカルに複製する。
- 自動化: スクリプトから使って定期取得やバッチ処理を行う。
目次
- Wgetとは何か
- Windowsでのインストール方法(複数)
- Macでのインストール
- 基本的な使い方と主要オプション解説
- よくあるシナリオと実例コマンド集
- サイトを複製するときの注意点とSOP
- トラブルシューティング(command not found の原因別対処)
- 役割別チェックリスト
- インシデント対応例(サーバ過負荷を起こした場合)
- テストケースと受け入れ基準
- 互換性・移行のヒント
- セキュリティとプライバシー考慮
- まとめ
Wgetとは何か、何ができるか
Wgetは非対話型のダウンロードユーティリティです。以下をサポートします。
- HTTP/HTTPS/FTP経由でファイルを取得
- 再帰的ダウンロード(ディレクトリとサブディレクトリの取得)
- User-Agentの設定、Cookieの送受信、認証付きダウンロード
- 速度制限と待機インターバルでサーバー負荷を抑える
- 失敗時の再試行やダウンロードの再開
利点は自動化との親和性です。一方、サーバーへの負荷や法的・倫理的な問題には注意が必要です。
Windowsでのインストール方法
以下の方法のいずれかを選べます。用途や管理権限に応じて選択してください。
1) バイナリを直接入手してSystem32に置く(手動)
手順:
- 公式や信頼できる配布元からwgetのWindows向けバイナリをダウンロードします(例: ezwinportsやGNUの配布をビルドしたものなど)。
- ダウンロードした実行ファイル(wget.exe)をC:\Windows\System32にコピーします。
- 新規のコマンドプロンプトを開き、wget -Vでバージョンを確認します。
注意: System32に置くと全ユーザーで利用可能になります。管理者権限が必要です。
2) PATHに追加する(推奨)
手順:
- ダウンロードしたwget.exeを任意のフォルダ(例: C:\Program Files\wget\)に置きます。
- システム環境変数のPATHにそのフォルダを追加します。手順: 設定 > システム > バージョン情報 > 関連設定の「システムの詳細設定」> 環境変数 > Path を編集。
- コマンドプロンプトを再起動し、wget -Vで確認。
メリット: System32に直置きするより安全。管理とアップデートがしやすい。
3) Chocolateyでインストール(Windows向けパッケージ管理)
コマンドプロンプト(管理者)で:
choco install wget -y
インストール後、wget -Vで確認します。Chocolateyはアップデート管理が容易です。
4) Scoopでインストール(非管理者ユーザー向け)
PowerShell(管理者でないでも可)でScoopを導入後:
scoop install wget
ユーザーのホーム下に導入され、PATHも自動で設定されます。
5) WSLやCygwinの利用
- WSL (Windows Subsystem for Linux) を使うと、Linux版のwgetをそのまま使えます。WSL上でaptやyumでwgetをインストールしてください(例: sudo apt update && sudo apt install wget)。
- CygwinやMSYS2でも同様に導入できます。
Windowsでの確認コマンド
wget -V
where wget
where wget は実行ファイルの場所を表示します。見つからない場合はPATH設定を確認してください。
Macでのインストール
MacではHomebrewが最も一般的です。手順:
- Homebrewをインストール(まだのとき): 公式手順に従います。端末で次を実行します。
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
- wgetをインストール:
brew install wget
- 確認:
wget -V
Homebrewの代わりにMacPortsを使うこともできます。
基本的な使い方と主要オプション解説
ここでは実務でよく使うオプションを実例とともに説明します。
構文
wget [オプション]... [URL]...
[オプション]は短い形式(例: -O)と長い形式(例: –output-document)があります。
単一ファイルのダウンロード
wget https://example.com/robots.txt
保存先ディレクトリを指定
wget -P /path/to/dir https://example.com/sitemap.xml
Windowsではパスの書式を適宜変更します: -P “C:\path\to\dir”
ダウンロードしたファイル名を指定
wget -O mypage.html https://example.com/file.html
User-Agentを定義
wget --user-agent="Chrome" https://example.com/file.html
実際にはブラウザの完全なUser-Agent文字列を入れるほうが確実です。
Googlebotとしてアクセス(例)
wget --user-agent="Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5X Build/MMB29P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Mobile Safari/537.36 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" https://example.com/path
User-Agent偽装は一部のサイトで利用規約違反になることがあります。利用前に確認してください。
robots.txtを変更時のみ取得(タイムスタンプ活用)
初回ダウンロードでヘッダ情報を確認:
wget -S https://example.com/robots.txt
以降、更新がある場合のみ取得:
wget -N https://example.com/robots.txt
-N はサーバーのLast-Modifiedを見て差分があるときのみダウンロードします。
HTML内のリンクをローカル用に変換
wget --convert-links https://example.com/path
単一ページをローカルで動作するように複製
wget -E -H -k -K -p --convert-links https://example.com/path
オプションの意味は後述しています。
複数URLの一括ダウンロード
ファイル (urls.txt) を作成し、各行にURLを並べます。
https://example.com/1
https://example.com/2
https://example.com/3
実行:
wget -i urls.txt
注: 元の文書では -I と誤記されていました。複数URL入力には -i を使います。
ダウンロード速度の制限と待機
wget --wait=1 --limit-rate=10K https://example.com/file
–wait=1 はリクエスト間の待機秒数。–limit-rate=10K は転送速度をおよそ10キロバイト/秒に制限します。単位はK,M,Gが使えます。
再帰的にサイト全体を取得(要注意)
wget --recursive --page-requisites --adjust-extension --span-hosts --wait=1 --limit-rate=10K --convert-links --restrict-file-names=windows --no-clobber --domains=example.com --no-parent https://example.com
主要オプションの説明:
- –recursive: 再帰ダウンロード(深さ指定可能)
- –page-requisites: ページ表示に必要なすべてのリソースを取得(画像、CSS等)
- –adjust-extension: 適切な拡張子(.html等)を付与
- –span-hosts: 外部ホストのリソースも取得する
- –wait, –limit-rate: サーバー負荷軽減用
- –convert-links: ローカルで機能するようリンクを書き換える
- –restrict-file-names=windows: Windowsで安全なファイル名に変換
- –no-clobber: 既存ファイルを上書きしない
- –domains=example.com: 指定ドメイン外は追跡しない
- –no-parent: 親ディレクトリには遡らない
重要: 再帰的ダウンロードは対象サイトに負荷を掛けます。必ず許可を得るか、robots.txtの指示に従ってください。
よくあるシナリオと実例コマンド集
- ダウンロードを途中から再開するには:
wget -c https://example.com/largefile.zip
-c (–continue) は部分ダウンロードの続行を試みます。
- Basic認証のあるサーバから取得:
wget --user=username --password=secret https://example.com/secret.zip
- Cookieを使ってログイン後のページを取得:
- ブラウザでログインしてCookieを取得、またはwgetでログインフォームを投稿してCookieを保存。
- 保存したCookieを使う:
wget --load-cookies cookies.txt https://example.com/private
- タイムアウトと再試行の設定:
wget --tries=5 --timeout=30 https://example.com/file
tries は試行回数、timeout は接続タイムアウト(秒)です。
サイトを複製するときの運用SOP(簡易版)
目的: 許可を得た上で、サイトのローカル複製を安全に取得する手順。
手順:
- 対象サイトの利用規約と robots.txt を確認する。
- 所有者に連絡し、クロール窓口と許可範囲を確認する。
- クロールの範囲(ドメイン、パス、深さ)を定義する。
- テスト環境で小規模(1ページ〜数ページ)を試行する。
- –wait と –limit-rate を設定する(例: –wait=2 –limit-rate=50K)。
- 監視を準備し、サーバのレスポンスを確認する(負荷が上がれば即中止)。
- 完了後、データ整合性チェックを実施する(ファイル数やサイズを比較)。
チェックリスト(短縮):
- robots.txtの確認
- サイトオーナーに通知/許可
- 深さとドメイン制限を設定
- レート制限を入れて実行
- ログを保存して監査
トラブルシューティング: wget: command not found の原因別対処
原因と対処:
wgetが未インストール
- 対処: インストール方法(Chocolatey、Scoop、手動)で導入。
PATHに登録されていない
- 対処: where wget で場所を確認し、パスが通っていない場合は環境変数に追加して再起動。
管理者権限でSystem32に置いたがコマンドプロンプトを再起動していない
- 対処: 新しいターミナルを開く。
名前の衝突(古い別コマンドやスクリプトが優先されている)
- 対処: where wget で優先されている実行ファイルのパスを確認。不要なものを取り除く。
WSLで動かしていると勘違いしている
- 対処: Windows側のwgetとWSL内のwgetは別物。使う環境に合わせてインストールする。
役割別チェックリスト
開発者:
- wgetのインストール方法をスクリプト化する
- テスト用の小さなURLセットで基本機能を確認
- 自動化ジョブのログを保存する
システム管理者:
- パッケージ管理(Chocolatey/Scoop/WSL)で管理
- PATHと権限を適切に設定
- 大規模クロール時は監視を準備(ネットワーク/CPU/IO)
SEO担当者:
- robots.txtとメタタグに従う
- User-Agentの偽装は慎重に行う
- サイトマップやrobots.txtの変更のみを定期取得すると効率的
インシデント対応例: サイトに過負荷を与えてしまった場合の手順
- 即時停止: 実行中のwgetプロセスを中止(Ctrl+Cまたはタスクマネージャでプロセスを終了)。
- 対象サーバー所有者に連絡して謝罪と連絡先を伝える。
- 実行ログを調査し、何が原因で高負荷になったかを特定(深さ設定間違い、span-hostsの誤使用など)。
- 設定を修正(待機時間増、limit-rate低下、ドメイン制限)。
- 再発防止: SOPの更新と自動化スクリプトに安全チェックを追加。
テストケースと受け入れ基準(Критерии приёмки)
テストケース例:
- 単一ファイル取得: wget single-url -> ファイルが存在し、サイズが期待どおりである。
- 再帰取得(深さ=1): 指定範囲のみ取得されている。
- 再開機能: ダウンロード中断後、-cで続行して最終的に一致する。
- タイムスタンプ: -N を使って更新がない場合は再取得しない。
受け入れ基準:
- ダウンロードされたファイル数と合計サイズが期待値の±5%以内(状況により変動するため定性的確認でも可)。
- 取得によりサーバーエラーを引き起こしていないこと(HTTP 5xxの急増がない)。
- ログが保存され、エラー時は原因が特定できること。
互換性・移行のヒント
- Windowsではバイナリ、Chocolatey、Scoop、WSLなど複数の導入方法がある。CI環境や自動化環境ではパッケージ管理ツールを使うのが望ましい。
- Linux/MacとWindowsでコマンドの文字列処理やパス表記が異なるため、スクリプトは環境判定を入れて切り替える。
セキュリティとプライバシー
- 認証情報(–user/–password)は公開リポジトリやログに残さないでください。代替としてCookieやトークンを安全に管理すること。
- User-Agentの偽装は法的・契約的に問題になる場合があります。利用規約を確認してください。
- 取得したデータに個人情報が含まれる場合はGDPR等の法規制に従い、保存・利用・削除の方針を確立してください。
代替ツールと使い分け
- curl: 単発のHTTPリクエストやAPI呼び出しではcurlが柔軟で広く使われます。wgetは再帰取得や大規模ダウンロードに強い。
- HTTrack: GUI/専用ツールでサイトミラーに特化している。
- プログラム(PythonのrequestsやScrapy): 複雑なスクレイピングや構造化データ抽出にはプログラム的アプローチが有利。
選び方のヒューリスティック: 簡単なファイル取得はwget/curl、サイト全体の複製はwget/HTTrack、複雑な抽出はプログラムで。
ミニメソドロジー: 安全にサイトを取得する5ステップ
- 目的を定義する(何を、なぜ取るか)。
- 権利確認(robots.txt・利用規約・許可)
- 小規模で検証(サンプルURL)
- 本実行はレート制限と監視を入れて行う
- 結果確認とログ保存
簡易決定フロー(Mermaid)
flowchart TD
A[開始: ダウンロードしたい?] --> B{サイトの許可はあるか}
B -- ある --> C[小規模でテスト実行]
B -- ない --> D[robots.txtを確認し、必要なら連絡]
C --> E{負荷は問題ないか}
E -- はい --> F[本実行(レート制限を設定)]
E -- いいえ --> G[設定を調整して再テスト]
D --> H[許可を得る or 範囲を限定]
H --> C
F --> I[完了・ログ保存]
ミニ用語集(1行ずつ)
- User-Agent: クライアントの識別文字列。
- robots.txt: クロールの方針を示すファイル。
- –recursive: 再帰的にリンクを辿るオプション。
- –limit-rate: ダウンロード速度制限。
まとめ
Wgetは強力なコマンドラインツールです。Windowsで「wget: command not found」が出たら、まずはインストールとPATHを確認してください。用途に応じてChocolateyやScoop、WSLを使うことで運用が安定します。サイトをクローリングする際は必ず許可とレート制限を守り、運用SOPを準備してから実行してください。
要点再掲:
- wgetが見つからない場合はインストールまたはPATH設定を確認する。
- 再帰的ダウンロードではサーバー負荷と利用規約に注意する。
- Chocolatey/Scoop/WSLはWindows運用で便利。
Notes: この記事は実務での安全運用とトラブル回避を重視しています。疑問があれば実行前にテスト環境で試してください。