JavaRush /Java-Blog /Random-DE /Parsen von HTML mit der Jsoup-Bibliothek
Сергей
Level 40
Москва

Parsen von HTML mit der Jsoup-Bibliothek

Veröffentlicht in der Gruppe Random-DE
Deshalb möchten wir konkrete Informationen von der Website erhalten. Sehen wir uns Schritt für Schritt an, wie das geht. Parsen von HTML mit der Jsoup-Bibliothek – 1Zuerst müssen wir die bekommen Document. Dies ist eine Darstellung unserer HTML-Seite. Jsoup bietet mehrere Möglichkeiten, eine Site in eine Document. Verbinden zum Server
Document document = Jsoup.connect("https://hh.ru/").get();
Jsoup selbst stellt eine Verbindung zur Site her. Diese Methode ist die einfachste, eignet sich jedoch nur zum Testen. Es gibt bequemere und flexiblere http-Clients. Denken Sie außerdem daran, unabhängig davon, welchen HTTP-Client Sie verwenden, der Anfrage einen Header User-Agentmit einem Wert wie hinzuzufügen Chrome/81.0.4044.138. Anhand dieses Headers ermittelt der Server, von welchem ​​Gerät aus Sie eine Verbindung hergestellt haben. Ohne diesen Header betrachtet der Server Sie als Bot und kann Sie sperren. Aus Datei ;
File file = new File("hh-test.html");
Document document = Jsoup.parse(file, "UTF-8", "hh.ru");
Dies ist der Hauptweg, um ein Objekt zu erhalten Document. Das letzte Argument "hh.ru"ist der Basis-URI. Dies ist notwendig, um absolute Links aus relativen Links zu erstellen, die auf der Website vorhanden sind. Von Linie
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");
Als nächstes werde ich die Bibliothek in diesem HTML-Code demonstrieren, der eine vereinfachte Site darstellt. Ein Tag abrufen Die Hauptaufgabe beim Parsen besteht darin, das gewünschte Tag abzurufen. Wir werden dies mit der Methode tun select. Beachten Sie, dass immer eine Liste von Tags zurückgegeben wird. Wenn keine Tags gefunden werden, ist die Liste leer. Als Methodenargument müssen Sie einen CSS-Selektor übergeben, nach dem nach Tags gesucht wird. Ich werde ausführlicher auf Selektoren eingehen, da die ganze Arbeit darauf hinausläuft, den richtigen Selektor zu schreiben. Normalerweise müssen wir es so verfassen, dass es ein einzelnes Tag zurückgibt.
Elements h1 = document.select("h1");
System.out.println(h1);
Tags-Tags abrufen h1 Ausgabe:

<h1>Работа найдется для каждого</h1>
Elements titleElem = document.select("head > title");
Holen Sie sich Tags title. Das Zeichen >wählt Tags aus title, die innerhalb eines Tags verschachtelt sindhead
Elements divs = document.select("body > div");
divHolen Sie sich verschachtelte Tagsbody
Elements firstDiv = document.select("body > div:nth-child(1)");
Holen Sie sich das erste divverschachtelte Tag in body. Das Abrufen eines Tags anhand der Seriennummer ist eine schlechte Methode, da sich seine Position auf der Website ändern kann. Es ist besser, das Tag mit absoluten Parametern zu definieren. Diese Parameter sind Attribute classundid
Elements contentElem = document.select("body > div.content");
Holen Sie sich ein Tag divmit der Klasse „content“, verschachtelt inbody
Elements idElem = document.select("#123");
Holen Sie sich Tags mit der ID „123“
Elements divHeader = document.select("body > div.header.main :not(h1)");
Holen Sie sich Tags divmit der Klasse „header“ und „main“, verschachtelt in body, aber ohne Tags h1 . Ausgabe:

<div>
 Поиск вакансий
</div>
Elements-Methoden Sobald wir eine Liste erhalten haben, Elementskönnen wir Daten daraus extrahieren. Ich möchte Sie daran erinnern, dass der Selektor normalerweise nach einem Tag sucht, d. h. Muss ElementsGröße 1 sein.
elements.size();
Anzahl der gefundenen Tags
elements.get(0);
Holen Sie sich das erste Tag aus der Liste der gefundenen
elements.text();
Text, der in das Tag eingebettet ist
elements.attr("href");
„href“-Attributwert
elements.outerHtml();
Zeichenfolgendarstellung eines Tags. Wenn Sie schnell einen Elementselektor benötigen, öffnen Sie das Entwicklerfenster (f12) im Browser, klicken Sie mit der rechten Maustaste auf das Element, „Code anzeigen“, klicken Sie mit der rechten Maustaste auf das Tag und dann auf „Kopieren“. Kopierauswahl“. Ein solcher Selektor wird nicht optimal sein, ist aber für schnelle Ergebnisse durchaus geeignet. Fazit Dies sind die Grundlagen der Arbeit mit der Jsoup-Bibliothek. Dies reicht jedoch völlig aus, um Websites zu analysieren. Um sicher zu arbeiten, müssen Sie lediglich das Schreiben von Selektoren auf realen Websites üben. Ps. Diese Bibliothek wird verwendet, um ein großes Problem auf Stufe 38 zu lösen Parsen von HTML mit der Jsoup-Bibliothek – 1Parsen von HTML mit der Jsoup-Bibliothek – 3
Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION