Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

178
Views
Cómo obtener el siguiente nodo de texto con cheerio
<p> <i class="icon-home"></i> address <br> <i class="icon-website"></i> http://www.website.com <br> <i class="icon-tel"></i> phone number <br> <i class="icon-mail"></i> <a href="mailto:email@mail.com">Contact email</a> <br> </p>

Estoy tratando de obtener "dirección", "http://www.website.com" y "número de teléfono".

 const address = $("i.icon-home").next(); const website = $("i.icon-website").next(); const phoneNumber = $("i.icon-tel").next();

Usar next() me da el siguiente elemento <br> . ¿Cómo puedo obtener el siguiente elemento de texto?

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Los diversos métodos jQuery-ish de Cheerio se centran en los nodos Element, pero está buscando el contenido de los nodos Text.

La forma más fácil dado el HTML que ha mostrado es usar el nextSibling del elemento DOM (similar) subyacente para acceder a su próximo hermano (que será el nodo Text) y obtener el texto a través de nodeValue :

 const address = $("i.icon-home")[0].nextSibling.nodeValue; const website = $("i.icon-website")[0].nextSibling.nodeValue; const phoneNumber = $("i.icon-tel")[0].nextSibling.nodeValue;

( [0] accede al primer elemento DOM(ish) coincidente dentro de la colección Cheerio).

Un par de notas al respecto:

  1. Es posible que desee recortar los espacios en blanco (llamando a trim() ), ya que se conservan los espacios en blanco al principio y al final de los nodos de texto.

  2. Si no está seguro de si habrá un nodo de texto (o, de hecho, cualquier nodo) después de la imagen, es posible que desee estar más a la defensiva:

 const getNextText = (element) => { if (!element.nodeName) { // If it's a Cheerio object... element = element[0]; } const next = element.nextSibling; return next?.nodeType === 3 ? next.nodeValue.trim() : ""; };

Después

 const address = getNextText($("i.icon-home")); const website = getNextText($("i.icon-website")); const phoneNumber = getNextText($("i.icon-tel"));
about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!