https://mechanicalsoup.readthedocs.io/
Eine Python-Bibliothek zur Automatisierung der Interaktion mit Websites. MechanicalSoup speichert und sendet automatisch Cookies, folgt Weiterleitungen und kann Links folgen und Formulare übermitteln. Es macht kein JavaScript.
MechanicalSoup wurde von M Hickford erstellt, der ein begeisterter Benutzer der Mechanize-Bibliothek war. Leider war Mechanize bis 2019 nicht mit Python 3 kompatibel und seine Entwicklung stagnierte mehrere Jahre lang. MechanicalSoup bietet eine ähnliche API, die auf den Python-Giganten Requests (für HTTP-Sitzungen) und BeautifulSoup (für die Dokumentnavigation) basiert. Seit 2017 ist es ein Projekt, das von einem kleinen Team, bestehend aus @hemberger und @moy, aktiv gepflegt wird.
PyPy3 wird ebenfalls unterstützt (und getestet).
Laden Sie die neueste veröffentlichte Version von PyPI herunter und installieren Sie sie:
pip install MechanicalSoup
Laden Sie die Entwicklungsversion von GitHub herunter und installieren Sie sie:
pip install git+https://github.com/MechanicalSoup/MechanicalSoup
Von der Quelle installieren (installiert die Version im aktuellen Arbeitsverzeichnis):
Python setup.py installieren
(Fügen Sie in jedem Fall --user
zum install
hinzu, um die Installation im Home-Verzeichnis des aktuellen Benutzers durchzuführen.)
Die vollständige Dokumentation ist unter https://mechanicalsoup.readthedocs.io/ verfügbar. Möglicherweise möchten Sie direkt zur automatisch generierten API-Dokumentation springen.
Code aus examples/expl_qwant.py zum Abrufen der Ergebnisse einer Qwant-Suche:
"""Beispielverwendung von MechanicalSoup, um die Ergebnisse von der Qwantsearch-Engine zu erhalten."""import reimport Mechanicalsoupimport htmlimport urllib.parse# Connect to Qwantbrowser = Mechanicalsoup.StatefulBrowser(user_agent='MechanicalSoup')browser.open("https:// lite.qwant.com/")# Füllen Sie die Suche aus formbrowser.select_form('#search-form')browser["q"] = "MechanicalSoup"browser.submit_selected()# Zeigt die Ergebnisse für den Link in browser.page.select('.result a') an:# Qwant zeigt Umleitungslinks an , nicht die tatsächliche URL, also extrahieren# Sie die tatsächliche URL aus dem Weiterleitungslink:href = link.attrs['href']m = re.match(r"^/redirect/[^/]*/(.*)$", href)if m:href = urllib.parse.unquote(m.group(1))print(link.text, ' ->', href)
Weitere Beispiele finden Sie in examples/.
Für ein Beispiel mit einem komplexeren Formular (Kontrollkästchen, Optionsfelder und Textbereiche) lesen Sie tests/test_browser.py und tests/test_form.py.
Anweisungen zum Erstellen, Testen und Mitwirken bei MechanicalSoup: siehe CONTRIBUTING.rst.
Lesen Sie die FAQ.