es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Es posible encontrar una etiqueta con múltiples criterios específicos de manera fácil y elegante?

Estoy intentando hacer web scraping en https://liquipedia.net/dota2/Admiral esta página para obtener todas las etiquetas <li> que están dentro de una etiqueta <ul> que a su vez está dentro de un div con la clase mw-parser-output que tiene la propiedad title. (Creo que eso es lo que se llaman en el mundo HTML? Algo así como <tag property="...">).

¿Cuál sería la forma más elegante y sencilla de hacer esto con Cheerio? Sé que podría hacerlo con algún bucle for y cosas así, pero si hubiera una forma sencilla de hacerlo, mi código sería mucho más limpio.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para lograr esto utilizando Cheerio, puedes usar la funcionalidad querySelector para navegar por la página y enfocarte en los elementos específicos que deseas extraer. Aquí tienes un ejemplo de código que logrará la tarea de scrap de la web que describiste:

    const cheerio = require('cheerio');
    const axios = require('axios');
    
    axios.get('https://liquipedia.net/dota2/Admiral')
      .then(response => {
        const $ = cheerio.load(response.data);
        const lis = $('div[mw-parser-output][title] ul li');
        console.log(lis); // o cualquier otra acción que quieras realizar con los elementos seleccionados
      })
      .catch(error => console.log(error));
    

    En este código, primero cargamos el contenido HTML de la URL objetivo en la instancia de Cheerio. Luego, seleccionamos todos los elementos div que tienen tanto la clase mw-parser-output como un atributo title, y después navegamos a las etiquetas ul y li dentro de ellos utilizando el selector de combinación space-separated.

    Con este código, fácilmente puedes obtener todas las etiquetas li debajo de tu elemento div objetivo. Luego, puedes utilizar estas etiquetas para extraer cualquier dato que contengan y realizar cualquier otra acción adicional que desees tomar.

Comments are closed.