Simplified Chinese (简体中文) / README_zh.md
requests と BeautifulSoup をベースに構築された軽量なスクレイピングスクリプトです。日本の映画レビューサイト「Filmarks」から特定の作品のユーザーレビューデータを正確に収集します。
- 最新UI対応:Filmarksが最近更新した c2- プレフィックスのレスポンシブDOMクラス名に完全対応しています。
- 長文レビューの自動取得:「続きを読む」が含まれる省略されたレビューに遭遇した場合、スクリプトは詳細ページのリンクを自動的に抽出し、サブリクエストを送信して全文を補完します。
- データ紛失防止メカニズム:flush() によるディスク同期処理が組み込まれており、1ページ取得するごとにCSVへ強制書き込みを行うため、途中で強制終了してもデータが失われません。
高頻度のリクエストによるFilmarksサーバーのファイアウォール(WAF)制限を回避するため、スクリプトには厳格な待機時間(ウェイト)が設定されています:
-
ページ間ウェイト (主ループ):time.sleep(3) 各レビュー一覧ページをダウンロードした後、一律 3.0秒 のスリープを強制します。これによりIP BANリスクを回避します。
-
詳細ページウェイト (サブリクエスト):time.sleep(1.5) 「続きを読む」の全文を取得するために個別ページにアクセスする際、アクセス前に 1.5秒 のスリープを強制します。
注意:1ページ内に長文レビューが多数存在する場合、一時的にスクリプトが停止(フリーズ)したように見えることがありますが、これは安全待機戦略が実行されているためです。異常ではありませんので終了しないでください。
- Python 3.7+
- 依存ライブラリ: requests, beautifulsoup4, lxml
インストールコマンド: pip install requests beautifulsoup4 lxml
- main.py を開きます。
- グローバル定数 URL を、収集したい映画のトップページURLに変更します(例:https://filmarks.com/movies/70258 )。
- スクリプトを実行します: python main.py
実行が完了すると、ルートディレクトリに comments_filmarks.csv が生成されます。BOM付きUTF-8エンコードを採用しているため、Microsoft Excelで直接開いても日本語の文字化けが発生しません。
- ID: レビュー投稿者のユーザー名。
- Time: レビュー投稿時間(例: 2026/05/14 06:02)。
- star: ユーザーのスコア(未評価の場合は - )。
- comments: 構造化・クレンジング済みのレビュー本文(改行コードの除去および長文の復元が完了しています)。
- 技術検証目的:本プロジェクトのソースコードは、PythonのWebリクエストおよびDOM解析ロジックを検討するための技術検証目的で公開されています。商用目的での大規模なデータ収集はご遠慮ください。
- サイト規約の遵守:利用者は本スクリプトを実行する際、対象サイトの利用規約やアクセス負荷に関する制限を厳格に遵守してください。乱用によるIP BANやその他のトラブルについて、作者は一切の責任を負いません。