Scraper le web avec Selenium en Python
Contexte : je suis sous MacOS en architecture Intel 64bit (processeur Core i5)
Selenium vous permet programmatiquement d’émuler un navigateur (ici ce sera Chrome), et de télécharge une page et de l’analyser. Pourquoi est ce que c’estintéressant? Pour les test d’interface d’une part, puis d’autre part si vous voulez scraper une page très javascript, où les éléments sont rendus en JS donc non récupérables par un scrap avec BeautifulSoup, Selenium le peut.
Il est juste plus lent que BeautifulSoup, en effet il se repose sur le navigateur Chrome (notre cas ici mais ça peut être n’importe quel navigateur) qui fait le rendu, alors que BeautifulSoup ne fait pas le rendu.
Pré-requis :
- connaissez votre version de navigateur Chrome, en allant dans les 3 petits point puis Aide puis A Propos de Google Chrome
- Déterminez l’architecture de votre plateforme
- Ensuite allez sur le site de Chromium pour télécharger le chromedriver à mettre dans le même répertoire que votre script, le driver permet à Selenium de contrôler Chrome, c’est dépendant de l’OS et du microprocesseur. Il faut suivre le lien pour les dernières versions de Chrome Vous trouverez aussi les zip de Chrome for testing, que Selenium va lancer. chromedriver et Chrome for Testing doivent être téléchargés ensemble.
- Installer la librairie Selenium pip install selenium
Script minimal de Selenium pour scraper une page
from selenium import webdriver from selenium.webdriver.common.keys import Keys browser = webdriver.Chrome() #mac https://stackoverflow.com/questions/76928765/attributeerror-str-object-has-no-attribute-capabilities-in-selenium #driver = webdriver.Chrome('./chromedriver'). #ne marche pas sur Mac browser.get("https://www.python.org") print(browser.title)