Nous souhaitons donc obtenir des informations spécifiques du site. Voyons comment procéder étape par étape. Nous devons d’abord obtenir le
Document
. Ceci est une représentation de notre page HTML. Jsoup propose plusieurs façons de transformer un site en Document
. Connecter au serveur
Document document = Jsoup.connect("https://hh.ru/").get();
Jsoup lui-même se connecte au site. Cette méthode est la plus simple, mais elle ne convient qu’à des fins de test. Il existe des clients http plus pratiques et plus flexibles. Gardez également à l’esprit que quel que soit le client http que vous utilisez, ajoutez un en-tête à la requête User-Agent
avec une valeur telle que Chrome/81.0.4044.138
. À l'aide de cet en-tête, le serveur détermine à partir de quel appareil vous vous êtes connecté. Sans cet en-tête, le serveur vous considère comme un bot et peut vous bannir. À partir du fichier ;
File file = new File("hh-test.html");
Document document = Jsoup.parse(file, "UTF-8", "hh.ru");
C'est le principal moyen d'obtenir un objet Document
. Le dernier argument "hh.ru"
est l'URI de base. Ceci est nécessaire pour créer des liens absolus à partir de liens relatifs présents sur le site. De la ligne
String html =
"<html> " +
" <head> " +
" <title href=\"hh.ru/vacancy?home\"> " +
" Работа в Москве, поиск персонала и публикация вакансий - hh.ru " +
" </title> " +
" </head> " +
" <body> " +
" <div class=\"header main\"> " +
" <h1>Работа найдется для каждого</h1> " +
" <div>Поиск вакансий</div> " +
" </div> " +
" <div class=\"content\"> " +
" <div>Вакансии дня</div> " +
" <div id=\"123\">Компании дня</div> " +
" <div>Работа из дома</div> " +
" </div> " +
" </body> " +
"</html> ";
Document document = Jsoup.parse(html, "hh.ru");
Ensuite, je ferai une démonstration de la bibliothèque dans ce code HTML, qui représente un site simplifié. Obtenir une balise La tâche principale lors de l'analyse est d'obtenir la balise souhaitée. Nous ferons cela en utilisant la méthode select
. Notez qu'il renvoie toujours une liste de balises. Si aucune balise n'est trouvée, la liste sera vide. Vous devez passer un sélecteur CSS par lequel les balises sont recherchées comme argument de méthode. Je m'attarderai plus en détail sur les sélecteurs, car tout le travail se résume à écrire le bon sélecteur. En règle générale, nous devons le composer pour qu'il renvoie une seule balise.
Elements h1 = document.select("h1");
System.out.println(h1);
Obtenir des balises balises h1
Sortie :
<h1>Работа найдется для каждого</h1>
Elements titleElem = document.select("head > title");
Obtenez des balises title
. Le panneau >
sélectionne des balises title
imbriquées dans une balisehead
Elements divs = document.select("body > div");
Obtenez des balises div
imbriquées dansbody
Elements firstDiv = document.select("body > div:nth-child(1)");
Obtenez la première balise div
imbriquée dans body
. Récupérer un tag par numéro de série est une mauvaise méthode, car sa position sur le site peut changer. Il est préférable de définir la balise en utilisant des paramètres absolus. Ces paramètres sont des attributs class
etid
Elements contentElem = document.select("body > div.content");
Obtenez une balise div
avec la classe "content", imbriquée dansbody
Elements idElem = document.select("#123");
Obtenez des tags avec l'identifiant "123"
Elements divHeader = document.select("body > div.header.main :not(h1)");
Obtenez les balises div
avec les classes "header" et "main", imbriquées dans body
, mais sans balises h1
. Résultat :
<div>
Поиск вакансий
</div>
Méthodes des éléments Une fois que nous avons reçu une liste, Elements
nous pouvons en extraire des données. Permettez-moi de vous rappeler que le sélecteur recherche généralement une balise, c'est-à-dire doit Elements
être de taille 1.
elements.size();
nombre de tags trouvés
elements.get(0);
récupérer le premier tag de la liste des tags trouvés
elements.text();
texte intégré dans la balise
elements.attr("href");
valeur de l'attribut "href"
elements.outerHtml();
représentation sous forme de chaîne d'une balise Si vous avez besoin d'obtenir rapidement un sélecteur d'élément, ouvrez le panneau de développement (f12) dans le navigateur, faites un clic droit sur l'élément, "afficher le code", faites un clic droit sur la balise, puis "Copier" " Sélecteur de copie ». Un tel sélecteur ne sera pas optimal, mais il convient tout à fait pour des résultats rapides. Conclusion Ce sont les bases du travail avec la bibliothèque Jsoup. Mais cela suffit amplement pour analyser des sites. Pour travailler en toute confiance, il suffit de s’entraîner à écrire des sélecteurs sur des sites réels. Ps Cette bibliothèque est utilisée pour résoudre un gros problème au niveau 38
GO TO FULL VERSION