JavaRush /Java Blog /Random-IT /Analisi di HTML con la libreria jsoup
Сергей
Livello 40
Москва

Analisi di HTML con la libreria jsoup

Pubblicato nel gruppo Random-IT
Quindi vogliamo ottenere informazioni specifiche dal sito. Diamo un'occhiata a come eseguire questa operazione passo dopo passo. Analisi di HTML con la libreria jsoup - 1Per prima cosa dobbiamo ottenere il file Document. Questa è una rappresentazione della nostra pagina html. Jsoup ha diversi modi per trasformare un sito in un file Document. Connettiti al server
Document document = Jsoup.connect("https://hh.ru/").get();
Jsoup stesso si collega al sito. Questo metodo è il più semplice, ma è adatto solo per i test. Esistono client http più convenienti e flessibili. Tieni inoltre presente che, indipendentemente dal client http che utilizzi, aggiungi un'intestazione alla richiesta User-Agentcon un valore come Chrome/81.0.4044.138. Utilizzando questa intestazione, il server determina da quale dispositivo ti sei connesso. Senza questa intestazione, il server ti considera un bot e potrebbe bannarti. Dal file ;
File file = new File("hh-test.html");
Document document = Jsoup.parse(file, "UTF-8", "hh.ru");
Questo è il modo principale per ottenere un oggetto Document. L'ultimo argomento "hh.ru"è l'URI di base. Ciò è necessario per creare collegamenti assoluti da quelli relativi presenti nel sito. Dalla linea
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");
Successivamente, mostrerò la libreria in questo codice HTML, che rappresenta un sito semplificato. Ottenere un tag Il compito principale durante l'analisi è ottenere il tag desiderato. Lo faremo utilizzando il metodo select. Tieni presente che restituisce sempre un elenco di tag. Se non viene trovato alcun tag, l'elenco sarà vuoto. È necessario passare un selettore CSS in base al quale i tag vengono cercati come argomento del metodo. Mi soffermerò sui selettori in modo più dettagliato, perché tutto il lavoro si riduce alla scrittura del selettore corretto. Tipicamente dobbiamo comporlo in modo che restituisca un singolo tag.
Elements h1 = document.select("h1");
System.out.println(h1);
Ottieni tag tag h1 Risultato:

<h1>Работа найдется для каждого</h1>
Elements titleElem = document.select("head > title");
Ottieni tag title. Il segno >seleziona i tag titlenidificati all'interno di un taghead
Elements divs = document.select("body > div");
Ottieni tag divnidificatibody
Elements firstDiv = document.select("body > div:nth-child(1)");
Ottieni il primo tag divnidificato in body. Recuperare un tag tramite numero di serie è un metodo errato, perché la sua posizione sul sito potrebbe cambiare. È meglio definire il tag utilizzando parametri assoluti. Questi parametri sono attributi classeid
Elements contentElem = document.select("body > div.content");
Ottieni un tag divcon la classe "content", annidata inbody
Elements idElem = document.select("#123");
Ottieni tag con ID "123"
Elements divHeader = document.select("body > div.header.main :not(h1)");
Ottieni tag divcon le classi "header" e "main", nidificate in body, ma senza tag h1 .

<div>
 Поиск вакансий
</div>
Elementi Metodi Una volta ricevuta una lista, Elementspossiamo estrarne i dati. Lascia che ti ricordi che di solito il selettore cerca un tag, ad es. deve Elementsessere di taglia 1.
elements.size();
numero di tag trovati
elements.get(0);
ottieni il primo tag dall'elenco di quelli trovati
elements.text();
testo incorporato nel tag
elements.attr("href");
Valore dell'attributo "href".
elements.outerHtml();
rappresentazione stringa di un tag Se hai bisogno di ottenere rapidamente un selettore di elementi, apri il pannello dello sviluppatore (f12) nel browser, fai clic con il tasto destro sull'elemento, "visualizza codice", fai clic con il tasto destro sul tag, quindi "Copia" " Selettore copia”. Un tale selettore non sarà ottimale, ma è abbastanza adatto per risultati rapidi. Conclusione Queste sono le basi per lavorare con la libreria Jsoup. Ma questo è abbastanza per analizzare i siti. Per lavorare con sicurezza, tutto ciò di cui hai bisogno è esercitarti a scrivere selettori su siti reali. Ps Questa libreria viene utilizzata per risolvere un grosso problema al livello 38 Analisi di HTML con la libreria jsoup - 1Analisi di HTML con la libreria jsoup - 3
Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION