Deshalb möchten wir konkrete Informationen von der Website erhalten. Sehen wir uns Schritt für Schritt an, wie das geht. Zuerst 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-Agent
mit 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");
div
Holen Sie sich verschachtelte Tagsbody
Elements firstDiv = document.select("body > div:nth-child(1)");
Holen Sie sich das erste div
verschachtelte 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 class
undid
Elements contentElem = document.select("body > div.content");
Holen Sie sich ein Tag div
mit 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 div
mit der Klasse „header“ und „main“, verschachtelt in body
, aber ohne Tags h1
. Ausgabe:
<div>
Поиск вакансий
</div>
Elements-Methoden Sobald wir eine Liste erhalten haben, Elements
können wir Daten daraus extrahieren. Ich möchte Sie daran erinnern, dass der Selektor normalerweise nach einem Tag sucht, d. h. Muss Elements
Größ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
GO TO FULL VERSION