MechanicalSoup: Requests と BeautifulSoup を基盤にした Python ウェブ自動化ライブラリ
Web サイトとの対話を自動化するための Python ライブラリ。 MechanicalSoup は、Python の巨人である Requests __ (HTTP セッション用) と BeautifulSoup __ (ドキュメント ナビゲーション用) に基づいて構築された同様の API を提供します。
ひと目でわかる
- これは何?
- Cookie 処理、リダイレクト、リンク追跡、フォーム送信を扱う小さなライブラリ。JavaScript はサポートしないという明確な境界があります。
- 誰に向いている?
- MechanicalSoup は2つの依存ライブラリに密接に結びついており、README はその制限を明確にしています。JavaScript が必要なプロジェクトには適していません。
- 商用利用できる?
- できます。MIT は寛容なライセンスで、著作権表示とライセンス表示を残せば、使用・改変・販売が可能です。
- 今もメンテナンスされている?
- されています。最後のコミットは 43 日前です。
- 何の言語で書かれている?
- 主に Python です(GitHub の言語統計による)。
回答はプロジェクトの GitHub データ(最終同期:2026年9月14日)と当サイトの分析に基づくもので、法的助言ではありません。
オープンソース詳細解説
Mechanize のギャップから生まれた MechanicalSoup
MechanicalSoup は、Mechanize ライブラリの常連ユーザーだった M Hickford によって書かれました。Mechanize は長期間 Python 3 と互換性がなく、README がリンクする GitHub の問題は 2019 年まで解決されず、開発も数年停滞しました。MechanicalSoup は同様の API を提供しますが、HTTP セッションには Requests、ドキュメント操作には BeautifulSoup を基盤としています。2017 年以降、@hemberger と @moy を含む小規模なチームがこのプロジェクトを維持しています。README には最初のバージョンのリリース日が記載されていないため、この情報源から正確な作成時期は確認できません。 実行日時、版、環境、入力識別子、出力要約、警告を記録し、再現不能な結果は成功例として扱いません。 MechanicalSoup は、Mechanize ライブラリの常連ユーザーだった M Hickford によって書かれました。Mechanize は長期間 Python 3 と互換性がなく、README がリンクする GitHub の問題は 2019 年まで解決されず、開発も数年停滞しました。MechanicalSoup は同様の API を提供しますが、HTTP セッションには Requests、ドキュメント操作には BeautifulSoup を基盤としています。2017 年以降、@hemberger と @moy を含む小規模なチームがこのプロジェクトを維持しています。README には最初のバージョンのリリース日が記載されていないため、この情報源から正確な作成時期は確認できません。 実行日時、版、環境、入力識別子、出力要約、警告を記録し、再現不能な結果は成功例として扱いません。 MechanicalSoup は、Mechanize ライブラリの常連ユーザーだった M Hickford によって書かれました。Mechanize は長期間 Python 3 と互換性がなく、README がリンクする GitHub の問題は 2019 年まで解決されず、開発も数年停滞しました。MechanicalSoup は同様の API を提供しますが、HTTP セッションには Requests、ドキュメント操作には BeautifulSoup を基盤としています。2017 年以降、@hemberger と @moy を含む小規模なチームがこのプロジェクトを維持しています。README には最初のバージョンのリリース日が記載されていないため、この情報源から正確な作成時期は確認できません。 実行日時、版、環境、入力識別子、出力要約、警告を記録し、再現不能な結果は成功例として扱いません。 MechanicalSoup は、Mechanize ライブラリの常連ユーザーだった M Hickford によって書かれました。Mechanize は長期間 Python 3 と互換性がなく、README がリンクする GitHub の問題は 2019 年まで解決されず、開発も数年停滞しました。MechanicalSoup は同様の API を提供しますが、HTTP セッションには Requests、ドキュメント操作には BeautifulSoup を基盤としています。2017 年以降、@hemberger と @moy を含む小規模なチームがこのプロジェクトを維持しています。README には最初のバージョンのリリース日が記載されていないため、この情報源から正確な作成時期は確認できません。 実行日時、版、環境、入力識別子、出力要約、警告を記録し、再現不能な結果は成功例として扱いません。
Cookie 処理、リダイレクト、フォーム、そして JavaScript の境界
README は3つの主要な機能を明記しています。MechanicalSoup は Cookie を自動的に保存・送信し、リダイレクトに従い、リンクをたどってフォームを送信できます。また、JavaScript を実行しないと率直に述べています。この制限はライブラリを選ぶ際の中心的な要素です。設計は HTTP セッション層に Requests、ドキュメントの解析とナビゲーションに BeautifulSoup を依存しています。サンプルコードでは StatefulBrowser オブジェクトが使われており、状態を持つ永続セッションが示唆されますが、README はクラス階層を正式に定義していません。 README は3つの主要な機能を明記しています。MechanicalSoup は Cookie を自動的に保存・送信し、リダイレクトに従い、リンクをたどってフォームを送信できます。また、JavaScript を実行しないと率直に述べています。この制限はライブラリを選ぶ際の中心的な要素です。設計は HTTP セッション層に Requests、ドキュメントの解析とナビゲーションに BeautifulSoup を依存しています。サンプルコードでは StatefulBrowser オブジェクトが使われており、状態を持つ永続セッションが示唆されますが、README はクラス階層を正式に定義していません。 README は3つの主要な機能を明記しています。MechanicalSoup は Cookie を自動的に保存・送信し、リダイレクトに従い、リンクをたどってフォームを送信できます。また、JavaScript を実行しないと率直に述べています。この制限はライブラリを選ぶ際の中心的な要素です。設計は HTTP セッション層に Requests、ドキュメントの解析とナビゲーションに BeautifulSoup を依存しています。サンプルコードでは StatefulBrowser オブジェクトが使われており、状態を持つ永続セッションが示唆されますが、README はクラス階層を正式に定義していません。 README は3つの主要な機能を明記しています。MechanicalSoup は Cookie を自動的に保存・送信し、リダイレクトに従い、リンクをたどってフォームを送信できます。また、JavaScript を実行しないと率直に述べています。この制限はライブラリを選ぶ際の中心的な要素です。設計は HTTP セッション層に Requests、ドキュメントの解析とナビゲーションに BeautifulSoup を依存しています。サンプルコードでは StatefulBrowser オブジェクトが使われており、状態を持つ永続セッションが示唆されますが、README はクラス階層を正式に定義していません。
インストール: PyPI、GitHub、またはローカルソース
README には3つのインストール方法があります。リリース版は `pip install MechanicalSoup` でインストールします。GitHub の開発版は `pip install git+https://github.com/MechanicalSoup/MechanicalSoup` でインストールします。ローカルのチェックアウトでは、`pip install .` が現在のディレクトリをインストールします。いずれの場合も `--user` を追加すると、現在のユーザーのホームディレクトリにインストールされます。README は PyPy3 がサポートされテストされているとも述べています。サポートされている正確な Python バージョンは列挙されておらず、PyPI のバッジに情報があります。 README には3つのインストール方法があります。リリース版は `pip install MechanicalSoup` でインストールします。GitHub の開発版は `pip install git+https://github.com/MechanicalSoup/MechanicalSoup` でインストールします。ローカルのチェックアウトでは、`pip install .` が現在のディレクトリをインストールします。いずれの場合も `--user` を追加すると、現在のユーザーのホームディレクトリにインストールされます。README は PyPy3 がサポートされテストされているとも述べています。サポートされている正確な Python バージョンは列挙されておらず、PyPI のバッジに情報があります。 README には3つのインストール方法があります。リリース版は `pip install MechanicalSoup` でインストールします。GitHub の開発版は `pip install git+https://github.com/MechanicalSoup/MechanicalSoup` でインストールします。ローカルのチェックアウトでは、`pip install .` が現在のディレクトリをインストールします。いずれの場合も `--user` を追加すると、現在のユーザーのホームディレクトリにインストールされます。README は PyPy3 がサポートされテストされているとも述べています。サポートされている正確な Python バージョンは列挙されておらず、PyPI のバッジに情報があります。 README には3つのインストール方法があります。リリース版は `pip install MechanicalSoup` でインストールします。GitHub の開発版は `pip install git+https://github.com/MechanicalSoup/MechanicalSoup` でインストールします。ローカルのチェックアウトでは、`pip install .` が現在のディレクトリをインストールします。いずれの場合も `--user` を追加すると、現在のユーザーのホームディレクトリにインストールされます。README は PyPy3 がサポートされテストされているとも述べています。サポートされている正確な Python バージョンは列挙されておらず、PyPI のバッジに情報があります。
実際の例: Qwant の検索
README には `examples/expl_qwant.py` からの完全な例が含まれています。スクリプトはカスタムユーザーエージェントを持つ StatefulBrowser を作成し、Qwant のライトページを開き、CSS セレクタ `#search-form` で検索フォームを選択し、クエリフィールドに「MechanicalSoup」を設定して送信します。その後、結果のリンクを反復処理し、正規表現を使用して Qwant のリダイレクトパスから実際の URL を抽出し、各結果のテキストと宛先を出力します。この例は、開く、フォームを選択、フィールドに入力、送信、応答ページの解析という基本的な流れを示しています。`examples/` ディレクトリには他の例があり、README はチェックボックス、ラジオボタン、テキストエリアを含む複雑なフォーム用にテストを参照しています。 README には `examples/expl_qwant.py` からの完全な例が含まれています。スクリプトはカスタムユーザーエージェントを持つ StatefulBrowser を作成し、Qwant のライトページを開き、CSS セレクタ `#search-form` で検索フォームを選択し、クエリフィールドに「MechanicalSoup」を設定して送信します。その後、結果のリンクを反復処理し、正規表現を使用して Qwant のリダイレクトパスから実際の URL を抽出し、各結果のテキストと宛先を出力します。この例は、開く、フォームを選択、フィールドに入力、送信、応答ページの解析という基本的な流れを示しています。`examples/` ディレクトリには他の例があり、README はチェックボックス、ラジオボタン、テキストエリアを含む複雑なフォーム用にテストを参照しています。 README には `examples/expl_qwant.py` からの完全な例が含まれています。スクリプトはカスタムユーザーエージェントを持つ StatefulBrowser を作成し、Qwant のライトページを開き、CSS セレクタ `#search-form` で検索フォームを選択し、クエリフィールドに「MechanicalSoup」を設定して送信します。その後、結果のリンクを反復処理し、正規表現を使用して Qwant のリダイレクトパスから実際の URL を抽出し、各結果のテキストと宛先を出力します。この例は、開く、フォームを選択、フィールドに入力、送信、応答ページの解析という基本的な流れを示しています。`examples/` ディレクトリには他の例があり、README はチェックボックス、ラジオボタン、テキストエリアを含む複雑なフォーム用にテストを参照しています。 README には `examples/expl_qwant.py` からの完全な例が含まれています。スクリプトはカスタムユーザーエージェントを持つ StatefulBrowser を作成し、Qwant のライトページを開き、CSS セレクタ `#search-form` で検索フォームを選択し、クエリフィールドに「MechanicalSoup」を設定して送信します。その後、結果のリンクを反復処理し、正規表現を使用して Qwant のリダイレクトパスから実際の URL を抽出し、各結果のテキストと宛先を出力します。この例は、開く、フォームを選択、フィールドに入力、送信、応答ページの解析という基本的な流れを示しています。`examples/` ディレクトリには他の例があり、README はチェックボックス、ラジオボタン、テキストエリアを含む複雑なフォーム用にテストを参照しています。
メンテナンス、コミュニティ、リポジトリの状態
README は Gitter チャットを挙げ、CONTRIBUTING.rst をビルド、テスト、貢献の方法として参照しています。ビルドステータス、カバレッジ、ドキュメント、CII ベストプラクティスのバッジが含まれています。リポジトリメタデータでは、4,883 スター、396 フォーク、39 のオープンイシューが示されており、アーカイブされていません。デフォルトブランチは main です。README は貢献のワークフローを詳細には説明せず、貢献ファイルを参照するだけです。ドキュメントの FAQ も参照しています。 README は Gitter チャットを挙げ、CONTRIBUTING.rst をビルド、テスト、貢献の方法として参照しています。ビルドステータス、カバレッジ、ドキュメント、CII ベストプラクティスのバッジが含まれています。リポジトリメタデータでは、4,883 スター、396 フォーク、39 のオープンイシューが示されており、アーカイブされていません。デフォルトブランチは main です。README は貢献のワークフローを詳細には説明せず、貢献ファイルを参照するだけです。ドキュメントの FAQ も参照しています。 README は Gitter チャットを挙げ、CONTRIBUTING.rst をビルド、テスト、貢献の方法として参照しています。ビルドステータス、カバレッジ、ドキュメント、CII ベストプラクティスのバッジが含まれています。リポジトリメタデータでは、4,883 スター、396 フォーク、39 のオープンイシューが示されており、アーカイブされていません。デフォルトブランチは main です。README は貢献のワークフローを詳細には説明せず、貢献ファイルを参照するだけです。ドキュメントの FAQ も参照しています。 README は Gitter チャットを挙げ、CONTRIBUTING.rst をビルド、テスト、貢献の方法として参照しています。ビルドステータス、カバレッジ、ドキュメント、CII ベストプラクティスのバッジが含まれています。リポジトリメタデータでは、4,883 スター、396 フォーク、39 のオープンイシューが示されており、アーカイブされていません。デフォルトブランチは main です。README は貢献のワークフローを詳細には説明せず、貢献ファイルを参照するだけです。ドキュメントの FAQ も参照しています。
ライセンスとドキュメント
MechanicalSoup は MIT ライセンスで配布されています。ライセンスの抜粋は、著作権表示を含めることを条件に、ソフトウェアのコピーを使用、コピー、変更、結合、公開、配布、サブライセンス、販売する権利を許可しています。ソフトウェアは「現状のまま」提供され、いかなる種類の保証もなく、ライセンスは損害に対する責任を否認しています。完全なドキュメントは mechanicalsoup.readthedocs.io でホストされ、自動生成された API ドキュメントへのリンクがあります。README は FAQ も指しています。ライセンス文はサポート、セキュリティ、メンテナンスの約束については何も述べていません。 MechanicalSoup は MIT ライセンスで配布されています。ライセンスの抜粋は、著作権表示を含めることを条件に、ソフトウェアのコピーを使用、コピー、変更、結合、公開、配布、サブライセンス、販売する権利を許可しています。ソフトウェアは「現状のまま」提供され、いかなる種類の保証もなく、ライセンスは損害に対する責任を否認しています。完全なドキュメントは mechanicalsoup.readthedocs.io でホストされ、自動生成された API ドキュメントへのリンクがあります。README は FAQ も指しています。ライセンス文はサポート、セキュリティ、メンテナンスの約束については何も述べていません。 MechanicalSoup は MIT ライセンスで配布されています。ライセンスの抜粋は、著作権表示を含めることを条件に、ソフトウェアのコピーを使用、コピー、変更、結合、公開、配布、サブライセンス、販売する権利を許可しています。ソフトウェアは「現状のまま」提供され、いかなる種類の保証もなく、ライセンスは損害に対する責任を否認しています。完全なドキュメントは mechanicalsoup.readthedocs.io でホストされ、自動生成された API ドキュメントへのリンクがあります。README は FAQ も指しています。ライセンス文はサポート、セキュリティ、メンテナンスの約束については何も述べていません。 MechanicalSoup は MIT ライセンスで配布されています。ライセンスの抜粋は、著作権表示を含めることを条件に、ソフトウェアのコピーを使用、コピー、変更、結合、公開、配布、サブライセンス、販売する権利を許可しています。ソフトウェアは「現状のまま」提供され、いかなる種類の保証もなく、ライセンスは損害に対する責任を否認しています。完全なドキュメントは mechanicalsoup.readthedocs.io でホストされ、自動生成された API ドキュメントへのリンクがあります。README は FAQ も指しています。ライセンス文はサポート、セキュリティ、メンテナンスの約束については何も述べていません。
編集部の結論
MechanicalSoup は2つの依存ライブラリに密接に結びついており、README はその制限を明確にしています。JavaScript が必要なプロジェクトには適していません。不要なプロジェクトには、シンプルな API と維持されたコードベースを提供します。
コミュニティノート