https://mechanicalsoup.readthedocs.io/
Web サイトとの対話を自動化するための Python ライブラリ。 MechanicalSoup は Cookie を自動的に保存して送信し、リダイレクトに従い、リンクをたどってフォームを送信できます。 JavaScriptは行いません。
MechanicalSoup は、Mechanize ライブラリの愛用者である M Hickford によって作成されました。残念ながら、Mechanize は 2019 年まで Python 3 と互換性がなく、開発は数年間停滞していました。 MechanicalSoup は、Python の巨人の Requests (HTTP セッション用) と BeautifulSoup (ドキュメント ナビゲーション用) に基づいて構築された同様の API を提供します。 2017 年以来、これは @hemberger と @moy を含む小規模なチームによって積極的に維持されているプロジェクトです。
PyPy3 もサポートされています (およびテストされています)。
PyPI から最新リリース バージョンをダウンロードしてインストールします。
pip install MechanicalSoup
GitHub から開発バージョンをダウンロードしてインストールします。
pip install git+https://github.com/MechanicalSoup/MechanicalSoup
ソースからインストールする (現在の作業ディレクトリにバージョンをインストールします):
Python setup.py インストール
(いずれの場合も、現在のユーザーのホーム ディレクトリにインストールするには、 install
コマンドに--user
を追加します。)
完全なドキュメントは https://mechanicalsoup.readthedocs.io/ で入手できます。自動的に生成された API ドキュメントに直接ジャンプすることもできます。
Examples/expl_qwant.py から、Qwant 検索から結果を取得するコードを示します。
"""Qwantsearch エンジンから結果を取得する MechanicalSoup の使用例。"""import reimport Mechanicalsoupimport htmlimport urllib.parse# Connect to Qwantbrowser = Mechanicalsoup.StatefulBrowser(user_agent='MechanicalSoup')browser.open("https:// lite.qwant.com/")# 検索内容を入力しますformbrowser.select_form('#search-form')browser["q"] = "MechanicalSoup"browser.submit_selected()# リンクの結果をブラウザに表示します。page.select('.result a'):# Qwant はリダイレクト リンクを表示します実際の URL ではないため、リダイレクト リンクから実際の URL を抽出#します:href = link.attrs['href']m = re.match(r"^/redirect/[^/]*/(.*)$", href)if m:href = urllib.parse.unquote(m.group(1))print(link.text, ' ->'、href)
他の例は、examples/ で入手できます。
より複雑なフォーム (チェックボックス、ラジオ ボタン、テキストエリア) の例については、tests/test_browser.py および testing/test_form.py を参照してください。
MechanicalSoup の構築、テスト、およびコントリビュートの手順: CONTRIBUTING.rst を参照してください。
よくある質問を読んでください。