JavaRush /Blogue Java /Random-PT /Analisando HTML com biblioteca jsoup
Сергей
Nível 40
Москва

Analisando HTML com biblioteca jsoup

Publicado no grupo Random-PT
Portanto, queremos obter informações específicas do site. Vejamos como fazer isso passo a passo. Analisando HTML com biblioteca jsoup - 1Primeiro precisamos pegar o Document. Esta é uma representação da nossa página html. Jsoup tem várias maneiras de transformar um site em um arquivo Document. Conecte-se ao servidor
Document document = Jsoup.connect("https://hh.ru/").get();
O próprio Jsoup se conecta ao site. Este método é o mais simples, mas só é adequado para testes. Existem clientes http mais convenientes e flexíveis. Lembre-se também de que, independentemente do cliente http usado, adicione um cabeçalho à solicitação User-Agentcom um valor como Chrome/81.0.4044.138. Usando este cabeçalho, o servidor determina de qual dispositivo você se conectou. Sem esse cabeçalho, o servidor considera você um bot e pode bani-lo. De arquivo ;
File file = new File("hh-test.html");
Document document = Jsoup.parse(file, "UTF-8", "hh.ru");
Esta é a principal forma de obter um objeto Document. O último argumento "hh.ru"é o URI base. Isso é necessário para criar links absolutos a partir dos relativos que estão presentes no site. Da linha
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");
A seguir irei demonstrar a biblioteca neste html, que representa um site simplificado. Obtendo uma tag A principal tarefa ao analisar é obter a tag desejada. Faremos isso usando o método select. Observe que ele sempre retorna uma lista de tags. Se nenhuma tag for encontrada, a lista estará vazia. Você precisa passar um seletor CSS pelo qual as tags são pesquisadas como argumento do método. Vou me concentrar nos seletores com mais detalhes, porque todo o trabalho se resume a escrever o seletor correto. Normalmente precisamos compô-lo para que ele retorne uma única tag.
Elements h1 = document.select("h1");
System.out.println(h1);
Obter tags Tags h1 Saída:

<h1>Работа найдется для каждого</h1>
Elements titleElem = document.select("head > title");
Obtenha etiquetas title. O sinal >seleciona tags titleaninhadas em uma taghead
Elements divs = document.select("body > div");
Obter tags divaninhadasbody
Elements firstDiv = document.select("body > div:nth-child(1)");
Obtenha a primeira tag divaninhada em body. Recuperar uma tag pelo número de série é uma má maneira, pois sua posição no site pode mudar. É melhor definir a tag usando parâmetros absolutos. Esses parâmetros são atributos classeid
Elements contentElem = document.select("body > div.content");
Obtenha uma tag divcom a classe "content", aninhada embody
Elements idElem = document.select("#123");
Obtenha tags com id "123"
Elements divHeader = document.select("body > div.header.main :not(h1)");
Obtenha tags divcom as classes "header" e "main", aninhadas em body, mas sem tags h1 . Saída:

<div>
 Поиск вакансий
</div>
Métodos dos elementos Depois de recebermos uma lista, Elementspodemos extrair dados dela. Deixe-me lembrá-lo de que normalmente o seletor procura uma tag, ou seja, deve Elementsser tamanho 1.
elements.size();
número de tags encontradas
elements.get(0);
obtenha a primeira tag da lista de encontradas
elements.text();
texto incorporado na tag
elements.attr("href");
Valor do atributo "href"
elements.outerHtml();
representação de string de uma tag Se você precisar obter rapidamente um seletor de elemento, abra o painel do desenvolvedor (f12) no navegador, clique com o botão direito no elemento, “visualizar código”, clique com o botão direito na tag e depois em “Copiar” “ Copiar seletor”. Esse seletor não será o ideal, mas é bastante adequado para resultados rápidos. Conclusão Este é o básico para trabalhar com a biblioteca Jsoup. Mas isso é suficiente para analisar sites. Para trabalhar com confiança, tudo que você precisa é praticar a escrita de seletores em sites reais. Ps Esta biblioteca é usada para resolver um grande problema no nível 38 Analisando HTML com biblioteca jsoup - 1Analisando HTML com biblioteca jsoup - 3
Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION