ライブラリ / SDK
MechanicalSoup/MechanicalSoup avatar
MechanicalSoup/MechanicalSoup

MechanicalSoup: Requests と BeautifulSoup を基盤にした Python ウェブ自動化ライブラリ

Web サイトとの対話を自動化するための Python ライブラリ。 MechanicalSoup は、Python の巨人である Requests __ (HTTP セッション用) と BeautifulSoup __ (ドキュメント ナビゲーション用) に基づいて構築された同様の API を提供します。

スター 4,892フォーク 399PythonMIT

ひと目でわかる

これは何?
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 と維持されたコードベースを提供します。

公式情報源

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
コミュニティノート

コミュニティノート