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

460
Views
Titiritero: desplácese hasta el final de un div

Estoy tratando de obtener todos los enlaces en el div "Notas y referencias" en esta página:

https://fr.wikipedia.org/wiki/Barack_Obama

pero parece que no tengo el selector adecuado. Intenté esto pero no funcionó:

 const scrollable_section = '#mw-content-text > div.mw-parser-output > div.reference-cadre' await page.evaluate(selector => { const element = document.querySelector(selector); element.scrollTop = element.offsetHeight; }, scrollable_section);

¿Puede alguien ayudarme?

Soy nuevo en Puppeteer, por lo que podría necesitar más explicaciones.

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

0

El hecho de que el elemento sea desplazable no significa que realmente necesite desplazarse para obtener los datos. Por lo general, solo para las fuentes dinámicas impulsadas por JS es necesario jugar con el desplazamiento.

En este caso, los datos están disponibles de forma estática, por lo que, a menos que esté usando Puppeteer por alguna otra razón, podría hacerlo con un combo Axios/Cheerio más simple y probablemente más rápido.

Aún mejor es usar la API de Wikipedia en lugar de raspar los datos. Si raspa, respete sus límites para robots.

Continuando con Puppeteer, Wikipedia tiene estructuras de página extrañas que no anidan secciones. Después de seleccionar #Notes_et_références , puede aparecer en el padre <h2> , luego iterar un par de nodos hermanos hacia adelante hasta que esté en el elemento .reference-cadre (codifiqué esta relación, pero podría hacerla más dinámica con un bucle si estar un poco más preparado para el futuro es un objetivo).

 const puppeteer = require("puppeteer"); let browser; (async () => { browser = await puppeteer.launch({headless: true}); const [page] = await browser.pages(); const url = "https://fr.wikipedia.org/wiki/Barack_Obama"; await page.goto(url); const links = await page.evaluate(() => [...document.querySelector("#Notes_et_références") .parentNode .nextElementSibling .nextElementSibling .querySelectorAll("a")] .map(e => e.getAttribute("href")) ); console.log(links.length, links.slice(0, 5)); })() .catch(err => console.error(err)) .finally(() => browser?.close()) ;

Producción:

 809 [ '#cite_ref-prononciation_1-0', '#cite_ref-prononciation_1-1', '/wiki/Prononciation_de_l%27anglais', '/wiki/Anglais_am%C3%A9ricain', '/wiki/Transcription_phon%C3%A9tique' ]
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!