JavaRush /Blog Java /Random-FR /Analyser le HTML avec la bibliothèque jsoup
Сергей
Niveau 40
Москва

Analyser le HTML avec la bibliothèque jsoup

Publié dans le groupe Random-FR
Nous souhaitons donc obtenir des informations spécifiques du site. Voyons comment procéder étape par étape. Analyser le HTML avec la bibliothèque jsoup - 1Nous 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-Agentavec 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 titleimbriquées dans une balisehead
Elements divs = document.select("body > div");
Obtenez des balises divimbriquées dansbody
Elements firstDiv = document.select("body > div:nth-child(1)");
Obtenez la première balise divimbriqué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 classetid
Elements contentElem = document.select("body > div.content");
Obtenez une balise divavec 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 divavec 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, Elementsnous 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 Analyser le HTML avec la bibliothèque jsoup - 1Analyser le HTML avec la bibliothèque jsoup - 3
Commentaires
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION