JavaRush /Blog Java /Random-PL /Parsowanie HTML za pomocą biblioteki jsoup
Сергей
Poziom 40
Москва

Parsowanie HTML za pomocą biblioteki jsoup

Opublikowano w grupie Random-PL
Chcemy więc uzyskać konkretne informacje z witryny. Przyjrzyjmy się, jak to zrobić krok po kroku. Parsowanie HTML za pomocą biblioteki jsoup - 1Najpierw musimy zdobyć Document. To jest reprezentacja naszej strony HTML. Jsoup ma kilka sposobów na przekształcenie witryny w plik Document. Połączyć się z serwerem
Document document = Jsoup.connect("https://hh.ru/").get();
Sam Jsoup łączy się z witryną. Ta metoda jest najprostsza, ale nadaje się tylko do testowania. Istnieją wygodniejsi i elastyczni klienci http. Pamiętaj też, że niezależnie od tego, jakiego klienta http używasz, dodaj nagłówek do żądania User-Agento wartości takiej jak Chrome/81.0.4044.138. Korzystając z tego nagłówka, serwer określa, z jakiego urządzenia się połączyłeś. Bez tego nagłówka serwer uzna Cię za bota i może Cię zbanować. Z pliku ;
File file = new File("hh-test.html");
Document document = Jsoup.parse(file, "UTF-8", "hh.ru");
Jest to główny sposób zdobycia obiektu Document. Ostatnim argumentem "hh.ru"jest podstawowy identyfikator URI. Jest to konieczne, aby utworzyć linki bezwzględne z linków względnych występujących na stronie. Z linii
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");
Następnie zademonstruję bibliotekę w tym kodzie HTML, który reprezentuje uproszczoną witrynę. Pobieranie tagu Głównym zadaniem podczas analizy jest uzyskanie żądanego tagu. Zrobimy to metodą select. Pamiętaj, że zawsze zwraca listę tagów. Jeżeli nie zostaną znalezione żadne tagi, lista będzie pusta. Jako argument metody musisz przekazać selektor CSS, według którego będą wyszukiwane tagi. Zastanowię się nad selektorami bardziej szczegółowo, ponieważ cała praca sprowadza się do napisania prawidłowego selektora. Zwykle musimy go skomponować tak, aby zwracał pojedynczy tag.
Elements h1 = document.select("h1");
System.out.println(h1);
Pobierz tagi tagi Dane h1 wyjściowe:

<h1>Работа найдется для каждого</h1>
Elements titleElem = document.select("head > title");
Zdobądź tagi title. Znak >wybiera tagi titlezagnieżdżone w taguhead
Elements divs = document.select("body > div");
Pobierz tagi divzagnieżdżonebody
Elements firstDiv = document.select("body > div:nth-child(1)");
Pobierz pierwszy tag divzagnieżdżony w body. Pobieranie tagu po numerze seryjnym jest złym sposobem, ponieważ jego pozycja na stronie może ulec zmianie. Lepiej jest zdefiniować tag za pomocą parametrów bezwzględnych. Te parametry to atrybuty classiid
Elements contentElem = document.select("body > div.content");
Pobierz tag divz zagnieżdżoną klasą „content”.body
Elements idElem = document.select("#123");
Pobierz tagi o identyfikatorze „123”
Elements divHeader = document.select("body > div.header.main :not(h1)");
Pobierz tagi divz klasą „header” i „main”, zagnieżdżone w body, ale bez tagów h1 .

<div>
 Поиск вакансий
</div>
Elementy Metody Po otrzymaniu listy Elementsmożemy wyodrębnić z niej dane. Przypomnę, że zazwyczaj selektor wyszukuje jeden tag, czyli: musi Elementsbyć rozmiar 1.
elements.size();
liczba znalezionych tagów
elements.get(0);
pobierz pierwszy tag z listy znalezionych
elements.text();
tekst osadzony w tagu
elements.attr("href");
Wartość atrybutu „href”.
elements.outerHtml();
ciąg znaków reprezentujący tag Jeśli chcesz szybko uzyskać selektor elementu, otwórz panel programisty (f12) w przeglądarce, kliknij element prawym przyciskiem myszy, „wyświetl kod”, kliknij prawym przyciskiem myszy znacznik, a następnie „Kopiuj” „ Kopiuj selektor”. Taki selektor nie będzie optymalny, ale całkiem odpowiedni do szybkich rezultatów. Wniosek Oto podstawy pracy z biblioteką Jsoup. Ale to wystarczy, aby przeanalizować witryny. Aby pracować pewnie, wystarczy poćwiczyć pisanie selektorów na prawdziwych stronach. Ps Ta biblioteka służy do rozwiązania dużego problemu na poziomie 38 Parsowanie HTML za pomocą biblioteki jsoup - 1Parsowanie HTML za pomocą biblioteki jsoup - 3
Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION