Por eso queremos obtener información específica del sitio. Veamos cómo hacer esto paso a paso. Primero necesitamos obtener el
Document
. Esta es una representación de nuestra página html. Jsoup tiene varias formas de convertir un sitio en un archivo Document
. Conectar al servidor
Document document = Jsoup.connect("https://hh.ru/").get();
El propio Jsoup se conecta al sitio. Este método es el más sencillo, pero sólo sirve para realizar pruebas. Hay clientes http más convenientes y flexibles. También tenga en cuenta que, sin importar qué cliente http utilice, agregue un encabezado a la solicitud User-Agent
con un valor como Chrome/81.0.4044.138
. Usando este encabezado, el servidor determina desde qué dispositivo se conectó. Sin este encabezado, el servidor te considera un bot y puede prohibirte. Desde el archivo ;
File file = new File("hh-test.html");
Document document = Jsoup.parse(file, "UTF-8", "hh.ru");
Esta es la forma principal de conseguir un objeto Document
. El último argumento "hh.ru"
es el URI base. Esto es necesario para crear enlaces absolutos a partir de enlaces relativos que están presentes en el sitio. De la línea
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 continuación, demostraré la biblioteca en este html, que representa un sitio simplificado. Obtener una etiqueta La tarea principal al analizar es obtener la etiqueta deseada. Esto lo haremos usando el método select
. Tenga en cuenta que siempre devuelve una lista de etiquetas. Si no se encuentran etiquetas, la lista estará vacía. Debe pasar un selector CSS mediante el cual se buscan etiquetas como argumento del método. Me detendré más en los selectores, porque todo el trabajo se reduce a escribir el selector correcto. Normalmente necesitamos componerlo para que devuelva una sola etiqueta.
Elements h1 = document.select("h1");
System.out.println(h1);
Obtener etiquetas etiquetas h1
Salida:
<h1>Работа найдется для каждого</h1>
Elements titleElem = document.select("head > title");
Obtener etiquetas title
. El letrero >
selecciona etiquetas title
anidadas dentro de una etiqueta.head
Elements divs = document.select("body > div");
Obtener etiquetas div
anidadas enbody
Elements firstDiv = document.select("body > div:nth-child(1)");
Obtenga la primera etiqueta div
anidada en body
. Recuperar una etiqueta por número de serie es una mala manera, porque su posición en el sitio puede cambiar. Es mejor definir la etiqueta usando parámetros absolutos. Estos parámetros son atributos class
yid
Elements contentElem = document.select("body > div.content");
Obtenga una etiqueta div
con la clase "contenido", anidada enbody
Elements idElem = document.select("#123");
Obtener etiquetas con ID "123"
Elements divHeader = document.select("body > div.header.main :not(h1)");
Obtenga etiquetas div
con la clase "encabezado" y "principal", anidadas en body
, pero sin etiquetas h1
.
<div>
Поиск вакансий
</div>
Elementos Métodos Una vez que hemos recibido una lista, Elements
podemos extraer datos de ella. Permítanme recordarles que normalmente el selector busca una etiqueta, es decir. debe Elements
ser talla 1.
elements.size();
número de etiquetas encontradas
elements.get(0);
obtener la primera etiqueta de la lista de encontradas
elements.text();
texto incrustado en la etiqueta
elements.attr("href");
valor del atributo "href"
elements.outerHtml();
representación de cadena de una etiqueta Si necesita obtener rápidamente un selector de elementos, abra el panel de desarrollador (f12) en el navegador, haga clic derecho en el elemento, "ver código", haga clic derecho en la etiqueta, luego "Copiar" " Selector de copias”. Un selector de este tipo no será óptimo, pero sí muy adecuado para obtener resultados rápidos. Conclusión Estos son los conceptos básicos para trabajar con la biblioteca Jsoup. Pero esto es suficiente para analizar sitios. Para trabajar con confianza, todo lo que necesita es practicar escribiendo selectores en sitios reales. Ps Esta biblioteca se utiliza para resolver un problema grande en el nivel 38.
GO TO FULL VERSION