Le web crawling est un outil puissant pour automatiser les tâches répétitives sur les sites web. Vous pouvez développer un robot capable d'interagir avec un site comme le ferait un utilisateur humain.
Dans un précédent article, nous avons exploré les bases du web crawling avec le module Python Scrapy. Cependant, cette approche ne gère pas le JavaScript. Pour les sites heavily dépendants du JavaScript, optez pour un robot utilisant Google Chrome, piloté comme un navigateur standard.
L'automatisation de Chrome repose sur Selenium, un framework qui agit comme intermédiaire entre votre code et le navigateur. Ce tutoriel, basé sur notre expertise en automatisation web, vous guide pas à pas : configuration de Selenium, utilisation de l'inspecteur Chrome, et programmation en Java.
Pour illustrer, nous lirons les emails Gmail via Selenium (à des fins éducatives uniquement ; préférez l'API officielle Gmail pour les usages réels, en respectant les conditions d'utilisation).
Selenium utilise un ChromeDriver, un exécutable distinct qui contrôle le navigateur. Téléchargez la dernière version compatible avec votre Chrome sur chromedriver.chromium.org.
Extrayez chromedriver.exe (Windows) ou l'équivalent dans un dossier comme C:\WebDrivers\chromedriver.exe. Ajoutez ce chemin à votre PATH ou spécifiez-le dans le code.
Pour Maven, ajoutez cette dépendance dans pom.xml (version mise à jour pour fiabilité) :
<dependencies>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>4.25.0</version>
</dependency>
</dependencies>Maven téléchargera automatiquement les JAR nécessaires.
Créez une instance ChromeDriver :
WebDriver driver = new ChromeDriver();Naviguez vers Google :
driver.get("https://www.google.com");Localisez le champ de recherche (name="q") :
WebElement element = driver.findElement(By.name("q"));Envoyez une requête :
element.sendKeys("terminator\n");Attendez les résultats :
new WebDriverWait(driver, Duration.ofSeconds(10))
.until(d -> d.getTitle().toLowerCase().startsWith("terminator"));Afficher le titre :
System.out.println("Titre : " + driver.getTitle());Fermez :
driver.quit();Cette base simple permet d'automatiser de nombreuses interactions manuelles.
L'inspecteur Chrome est essentiel pour identifier les sélecteurs. Ouvrez une page (ex. IMDb Justice League), clic droit sur un élément > "Inspecter".

Le résumé est un <div class="summary_text"> :

Selenium supporte CSS et XPath. Pour le résumé :
WebElement summaryEl = driver.findElement(By.cssSelector("div.summary_text"));Ou XPath :
WebElement summaryEl = driver.findElement(By.xpath("//div[@class='summary_text']"));Choisissez selon votre préférence.
Initiez :
WebDriver driver = new ChromeDriver();
driver.get("https://gmail.com");
new WebDriverWait(driver, Duration.ofSeconds(10))
.until(d -> d.getTitle().toLowerCase().startsWith("gmail"));Email :
driver.findElement(By.cssSelector("#identifierId")).sendKeys(email);
driver.findElement(By.cssSelector(".RveJvd")).click();
new WebDriverWait(driver, Duration.ofSeconds(10))
.until(d -> !d.findElements(By.xpath("//div[@id='password']")).isEmpty());Mot de passe :
driver.findElement(By.xpath("//div[@id='password']//input[@type='password']"))
.sendKeys(password);
driver.findElement(By.cssSelector(".RveJvd")).click();
new WebDriverWait(driver, Duration.ofSeconds(10))
.until(d -> !d.findElements(By.xpath("//div[@class='Cp']")).isEmpty());Lignes emails :
List<WebElement> rows = driver
.findElements(By.xpath("//div[@class='Cp']//table/tbody/tr"));
for (WebElement tr : rows) {
// De
System.out.println("De :");
for (WebElement e : tr.findElements(By.xpath(".//div[@class='yW']/*"))) {
System.out.println(" " + e.getAttribute("email") + ", " +
e.getAttribute("name") + ", " + e.getText());
}
// Sujet
System.out.println("Sujet : " + tr.findElement(By.xpath(".//div[@class='y6']")).getText());
// Date
WebElement dt = tr.findElement(By.xpath("./td[8]/*"));
System.out.println("Date : " + dt.getAttribute("title") + ", " + dt.getText());
}
System.out.println(rows.size() + " mails.");
driver.quit();Selenium excelle pour les sites JavaScript-heavy. L'inspecteur facilite les sélecteurs.
Quels projets automatisez-vous avec Selenium ? Partagez vos défis en commentaires !
[]