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

207
Views
Extraer texto con cheerio

Estoy tratando de escribir un script para extraer la identificación y el nombre del correo electrónico de este sitio web. Intenté el siguiente fragmento pero no funciona.

 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title>foo</title> <meta name="description" content=""> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="stylesheet" href=""> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> </head> <body> <div> <strong style="color: darkgreen;">Can read this tag</strong> <object id="external_page" type="text/html" data="https://aleenarais.com/buddy/" width="800px" height="600px" style="overflow:auto;border:5px ridge blue"> <!-- I want to read tag values from this object --> </object> </div> <script> window.addEventListener('load', function () { const item = []; $('strong[style="color: darkgreen;"]').each(function () { item.push($(this).text()) }) console.log(item) }) </script> </body> </html>

¿Hay alguna manera mejor de hacer esto? ¿O es posible convertir toda la página en una cadena y extraer el correo electrónico usando RegEx?

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

0

El correo electrónico y el nombre de la página web se representan en un iframe. La fuente de iframe es una fuente externa. Para que pueda extraer la información, necesita usar un navegador sin cabeza para hacerlo.

Sugeriría usar Node.JS & Puppeteer ( https://www.npmjs.com/package/puppeteer )

 const puppeteer = require("puppeteer"); (async() => { const url = "https://aleenarais.com/buddy/"; const browser = await puppeteer.launch(); const page = await browser.newPage(); await page.goto(url, { waitUntil: "networkidle0" }); var frames = await page.frames(); var myframe = frames.find( (f) => f.url().indexOf("https://feedium.app/fetchh.php") > -1 ); const textFeed = await myframe.$$eval("strong", (sElements) => sElements.map((el) => el.textContent) ); console.log(textFeed.splice(1)); //Array contains both name and email await browser.close(); })();

Titiritero carga la página de forma similar a como un usuario carga la página. Espera hasta que se realizan todas las llamadas de red (ver red inactiva0) y luego intenta encontrar el iframe que tiene la url (fetchh.php). Si observa, el nombre y el correo electrónico están presentes en las etiquetas fuertes y son las únicas etiquetas fuertes disponibles. Por lo tanto, estamos extrayendo las etiquetas fuertes, eliminando el conteo y nos quedamos solo con el nombre y el correo electrónico.

Salida: [ 'J J', 'j *j@gmail.com' ] //Acabo de enmascarar los valores pero el programa da los reales

Pasos para ejecutar el script:

  1. Instale Node.Js ( https://nodejs.org/en/download/ )
  2. Instalar titiritero usando (npm i titiritero)
  3. copie el script y colóquelo en el archivo (demo.js)
  4. En la terminal, navegue hasta el directorio en el que está presente demo.js y luego ejecute node demo.js

Deberías ver la salida.

about 4 years ago · Juan Pablo Isaza Report

0

Prueba esto:

 window.addEventListener('load', function () { let item = []; $('strong[style*="color: darkgreen;"]').each(function (index, item) { item.push($(this).text()) }) console.log(item) }
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!