Le logiciel libre Selenium est un framework pour réaliser des tests automatisés d’applications web. Développé à l’origine pour tester les sites Internet et les applications web, le pilote web Selenium peut également être utilisé pour scraper des sites Internet avec Python. Bien que Selenium ne soit pas codé en Python, les fonctionnalités de ce logiciel sont accessibles depuis Python.
Contrairement à Scrapy ou BeautifulSoup, Selenium n’agit pas au niveau du code source HTML. À la place, la page est chargée dans un navigateur sans interface utilisateur. Le navigateur interprète le code source de la page et génère un Document Object Model (DOM). Cette interface standardisée permet de tester les interactions des utilisateurs : de cette façon, il est par exemple possible de simuler des clics et de remplir automatiquement des formulaires. Les modifications de la page qui en résultent peuvent être retrouvées dans le DOM. Par conséquent, un web scraping avec Selenium suit le schéma suivant :
URL → requête HTTP → HTML → Selenium → DOM
Le DOM étant généré de façon dynamique, Selenium permet également de scraper des pages dont les contenus ont été générés avec JavaScript. L’accès aux contenus dynamiques constitue un avantage significatif de Selenium. Pour encore plus de praticité, Selenium peut également être utilisé en association avec Scrapy ou BeautifulSoup. Selenium fournira alors le code source tandis que l’autre outil se chargera du parsing et de l’analyse. Dans ce cas, on aura le schéma suivant :