Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

175
Vistas
jQuery/Cheerio: ¿Cómo obtener recursivamente ciertos elementos por nombre/etiqueta?

Estoy tratando de hacer un bot que raspe los enlaces de un sitio web. Me encuentro con un error extraño que no puedo resolver. Mi conjetura es que la segunda declaración if no se verifica y también mi falta de familiaridad con jQuery no está ayudando.

Error:

element.each no es una función

 const $ = load(html); const html = $("#id"); const temp = []; function recursive(element) { if (element.name === "a") { temp.push(element); } if (!element || element.children().length > 0 === false) { return "DID NOT FIND IT OR NO CHILDREN FOUND"; } return element.each((_, item) => recursive(item)); } recursive(html); return temp;
about 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Intenté crear un fragmento simple que demuestre lo que parece lograr con JQuery.

En primer lugar, su verificación si la etiqueta de un elemento no parece funcionar correctamente. Tuve que usar .prop('tagName') para obtener la etiqueta del elemento. Y se devuelve en todas las letras mayúsculas.

Su segunda declaración IF debería funcionar bien, pero el .each() funcionó como se esperaba. Desea iterar a través de todos los elementos secundarios e iniciar la función recursiva. Y la forma en que proporcionó el elemento secundario no terminó funcionando. El .each() quiere una función de devolución de llamada que proporcione dos parámetros, ya que tiene usos correctos. pero el elemento es un nodo HTML normal y tuvo que seleccionarlo con JQuery Constant $ like $(item) . Esto le da el elemento JQuery deseado con el que puede trabajar.

 const html = $("#test"); const temp = []; function recursive(element) { if (element.prop("tagName") === "A") { temp.push(element); } if (!element || element.children().length > 0 === false) { return "DID NOT FIND IT OR NO CHILDREN FOUND"; } return element.children().each((i, item) => recursive($(item))); } recursive(html); console.log(temp)
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div id="test"> <div class="headings"> <h1>Heading</h1> <a href="./main.html">Main Page</a> </div> <div class="test-cls"> <button>Hello</button> <a href="./test.html">Test Page</a> </div> </div>

about 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda