https://mechanicalsoup.readthedocs.io/
Une bibliothèque Python pour automatiser l'interaction avec les sites Web. MechanicalSoup stocke et envoie automatiquement des cookies, suit les redirections et peut suivre des liens et soumettre des formulaires. Il ne fait pas JavaScript.
MechanicalSoup a été créé par M Hickford, qui était un fervent utilisateur de la bibliothèque Mechanize. Malheureusement, Mechanize était incompatible avec Python 3 jusqu'en 2019 et son développement a stagné pendant plusieurs années. MechanicalSoup fournit une API similaire, construite sur les géants Python Requests (pour les sessions HTTP) et BeautifulSoup (pour la navigation dans les documents). Depuis 2017, c'est un projet activement entretenu par une petite équipe comprenant @hemberger et @moy.
PyPy3 est également pris en charge (et testé).
Téléchargez et installez la dernière version publiée à partir de PyPI :
pip installer MechanicalSoup
Téléchargez et installez la version de développement depuis GitHub :
pip install git+https://github.com/MechanicalSoup/MechanicalSoup
Installation à partir des sources (installe la version dans le répertoire de travail actuel) :
installation de python setup.py
(Dans tous les cas, ajoutez --user
à la commande install
pour installer dans le répertoire personnel de l'utilisateur actuel.)
La documentation complète est disponible sur https://mechanicalsoup.readthedocs.io/. Vous souhaiterez peut-être accéder directement à la documentation de l'API générée automatiquement.
À partir de examples/expl_qwant.py, codez pour obtenir les résultats d'une recherche Qwant :
"""Exemple d'utilisation de MechanicalSoup pour obtenir les résultats du moteur de recherche Qwant."""import réimport Mechanicalsoupimport htmlimport urllib.parse# Connectez-vous à Qwantbrowser = Mechanicalsoup.StatefulBrowser(user_agent='MechanicalSoup')browser.open("https:// lite.qwant.com/")# Renseignez la recherche formbrowser.select_form('#search-form')browser["q"] = "MechanicalSoup"browser.submit_selected()# Afficher les résultats du lien dans browser.page.select('.result a'):# Qwant affiche les liens de redirection , pas l'URL réelle, alors extrayez# l'URL réelle du lien de redirection :href = link.attrs['href']m = re.match(r"^/redirect/[^/]*/(.*)$", href)if m:href = urllib.parse.unquote(m.group(1))print(link.text, ' ->', href)
D’autres exemples sont disponibles dans examples/.
Pour un exemple avec un formulaire plus complexe (cases à cocher, boutons radio et zones de texte), lisez tests/test_browser.py et tests/test_form.py.
Instructions pour créer, tester et contribuer à MechanicalSoup : voir CONTRIBUTING.rst.
Lisez la FAQ.