Dans cet article nous parlerons des points suivants :
Qu’est-ce que Java ?
Java est un langage de programmation open-source développé avec la devise « Write Once, run Anywhere ». Cela signifie que tant qu’un programme prend en charge Java, il n’est pas nécessaire de réécrire des scripts. Il s’agit d’un langage particulièrement utile pour les programmeurs habitués à C et à C++, car la syntaxe de Java est très similaire.
Voici quelques-uns des principaux avantages de Java :
- Il s’agit d’un programme extrêmement populaire, ce qui signifie qu’il existe une grande communauté en ligne qui peut vous aider à faire votre travail et à résoudre des problèmes. De plus, une documentation très fournie est disponible, ce qui rend l’utilisation de Java beaucoup plus facile.
- Java possède des capacités dynamiques, notamment en ce qui concerne la « modification du code d’exécution », par exemple.
- Java est open-source, ce qui signifie qu’il est compatible avec des plateformes, très diverses, ce qui permet d’utiliser différentes API (Application Programming Interface).
Ceux d’entre vous qui souhaitent installer manuellement Java sur leur PC Windows peuvent se rendre sur la page officielle de téléchargement manuel.
Le web scraping avec Java
Si certains préfèrent utiliser Selenium pour faire du web scraping ou collecter des données avec Beautiful Soup, une autre option populaire est d’utiliser Java pour le web scraping. Voici un guide étape par étape sur la façon d’y parvenir facilement.
Avant de commencer, assurez-vous que les éléments suivants sont configurés sur votre ordinateur afin que l’environnement soit optimal pour le web scraping :
- Java11 – il existe des versions plus avancées mais cela reste de loin la version la plus populaire parmi les développeurs.
- Maven – c’est un moteur de production utilisé notamment pour la gestion des dépendances.
- IntelliJ IDEA – IntelliJ IDEA est un environnement de développement intégré pour le développement de logiciels en Java.
- HtmlUnit – il s’agit d’un simulateur d’activité de navigateur (par exemple, simulation de soumission de formulaire).
Vous pouvez vérifier les installations à l’aide des commandes suivantes :
- ’version -java’
- ‘vn -v’
Étape 1 : inspectez votre page cible
Rendez-vous sur le site cible sur lequel vous souhaitez collecter des données, cliquez n’importe où avec le bouton droit de la souris, puis cliquez sur « Inspecter l’élément » pour accéder à la « console du développeur », ce qui vous permet d’accéder au code HTML du site.
Étape 2 : commencez le scraping du code HTML
Ouvrez IntelliJ IDEA et créez un projet Maven :
les projets Maven contiennent un fichier pom.xml. Accédez au fichier pom.xml et configurez d’abord la version du JDK pour votre projet :
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
</properties>
Puis, puisque nous allons utiliser htmlunit, ajoutez la dépendance « htmlunit » au fichier pom.xml de la manière suivante :
<dependencies>
<dependency>
<groupId>net.sourceforge.htmlunit</groupId>
<artifactId>htmlunit</artifactId>
<version>2.63.0</version>
</dependency>
</dependencies>
Nous sommes maintenant prêts à commencer à écrire la première classe Java. Commencez par créer un nouveau fichier source Java :
Nous devons créer une méthode principale pour démarrer notre application. Créez la méthode principale comme ceci :
public static void main(String[] args) throws IOException {
}
L’application commence par cette méthode. C’est le point d’entrée de l’application. Vous pouvez maintenant envoyer une requête HTTP en utilisant les importations HtmlUnit comme ceci :
import com.gargoylesoftware.htmlunit.*;
import com.gargoylesoftware.htmlunit.html.*;
import java.io.IOException;
import java.util.List;
Créez maintenant un WebClient en définissant les options comme suit :
private static WebClient createWebClient() {
WebClient webClient = new WebClient(BrowserVersion.CHROME);
webClient.getOptions().setThrowExceptionOnScriptError(false);
webClient.getOptions().setCssEnabled(false);
webClient.getOptions().setJavaScriptEnabled(false);
return webClient;
}
Étape 3 : extrayez/analysez les données HTML
Nous allons maintenant extraire les données cibles de prix qui nous intéressent. Pour ce faire, nous allons utiliser les commandes intégrées HtmlUnit suivantes. Voici à quoi cela ressemblerait pour les points de données relatifs au « product price » :
WebClient webClient = createWebClient();
try {
String link = "https://www.ebay.com/itm/332852436920?epid=108867251&hash=item4d7f8d1fb8:g:cvYAAOSwOIlb0NGY";
HtmlPage page = webClient.getPage(link);
System.out.println(page.getTitleText());
String xpath = "//*[@id=\"mm-saleDscPrc\"]";
HtmlSpan priceDiv = (HtmlSpan) page.getByXPath(xpath).get(0);
System.out.println(priceDiv.asNormalizedText());
CsvWriter.writeCsvFile(link, priceDiv.asNormalizedText());
} catch (FailingHttpStatusCodeException | IOException e) {
e.printStackTrace();
} finally {
webClient.close();
}
Pour obtenir le XPath de l’élément désiré, utilisez la console du développeur. Dans la console du développeur, cliquez avec le bouton droit de la souris sur la section sélectionnée, puis cliquez sur « Copy XPath ». Cette commande copie la section sélectionnée en tant qu’expression XPath :
Les pages web contiennent des liens, du texte, des graphiques et des tableaux. Si vous sélectionnez le XPath d’un tableau, vous pouvez l’exporter au format CSV et effectuer d’autres calculs et analyses avec des programmes tels que Microsoft Excel. Dans l’étape suivante, nous allons nous pencher sur l’exportation d’un tableau sous forme de fichier CSV.
Étape 4 : exportation des données
Maintenant que les données ont été analysées, nous pouvons les exporter au format CSV pour les analyser de manière plus approfondie. Ce format peut être préféré à d’autres par certains professionnels, puisqu’il peut être facilement ouvert/affiché dans Microsoft Excel. Voici les lignes de commande à utiliser pour ce faire :
public static void writeCsvFile(String link, String price) throws IOException {
FileWriter recipesFile = new FileWriter("export.csv", true);
recipesFile.write("link, price\n");
recipesFile.write(link + ", " + price);
recipesFile.close();
}
Au final
Java peut être un moyen efficace pour les programmeurs, les spécialistes des données et les équipes d’experts d’accéder aux points de données cibles dont leur entreprise a besoin. Mais l’utilisation de Java pour le web scraping peut être une tâche très laborieuse. C’est pourquoi de nombreuses entreprises ont décidé d’automatiser entièrement leurs opérations de collecte de données. En utilisant un outil tel que le Web Scraper IDE, n’importe quel employé d’une entreprise peut désormais collecter les données dont il a besoin sans aucune compétence en codage. Il lui suffit de choisir son site cible et l’ensemble de données recherché, puis de sélectionner la fréquence de collecte, le format et le mode de livraison souhaités.