Portanto, queremos obter informações específicas do site. Vejamos como fazer isso passo a passo. Primeiro 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-Agent
com 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 title
aninhadas em uma taghead
Elements divs = document.select("body > div");
Obter tags div
aninhadasbody
Elements firstDiv = document.select("body > div:nth-child(1)");
Obtenha a primeira tag div
aninhada 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 class
eid
Elements contentElem = document.select("body > div.content");
Obtenha uma tag div
com 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 div
com 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, Elements
podemos extrair dados dela. Deixe-me lembrá-lo de que normalmente o seletor procura uma tag, ou seja, deve Elements
ser 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
GO TO FULL VERSION