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

501
Views
¿Por qué phantomJS 2.1.1 muestra esta página como color de fondo sin contenido, pero foxshot 1.2.0 la muestra correctamente?

Me gusta hacer un seguimiento de los resultados de la lotería de Massachusetts (asegúrate de que los resultados sean realmente aleatorios). Puedo abrir la página de resultados en cualquier navegador y copiar y pegar las líneas de texto, y ejecutar el texto a través de un filtro escrito en php o gawk para extraer los números de cada fecha. Pero pensé que sería mejor automatizar el proceso usando phantomJS para obtener las fechas y los números directamente del DOM.

No he podido hacer que esto funcione porque los elementos que contienen los resultados no parecen estar en el DOM accesible a través de phantomJS. No sé si estoy haciendo algo mal (probablemente lo estoy) o si es un problema con phantomJS (que sé que ya no se mantiene). Pero también intenté usar el ejemplo de renderizar una URL en una imagen .png directamente desde el ejemplo de Carga de página en el inicio rápido , y la imagen apareció como color de fondo sin texto, así que creo que es un problema con phantomJS. ¿O ese ejemplo necesita algún código adicional para esperar a que se completen todos los scripts incluidos?

Aquí está el javascript de ejemplo con la URL en cuestión y el nombre de archivo de la imagen cableado:

 var page = require('webpage').create(); page.open('https://www.masslottery.com/tools/past-results/mega-millions?start_date=2021-09-03&end_date=2021-09-28', function(status) { console.log("Status: " + status); if(status === "success") { page.render('example.png'); } phantom.exit(); });

Ejecutar phantomjs en el javascript anterior produce este archivo llamado ejemplo.png de la siguiente manera: ejemplo.png

Pero al ejecutar foxshot veo lo siguiente:

 $ foxshot 'https://www.masslottery.com/tools/past-results/mega-millions?start_date=2021-09-03&end_date=2021-09-28' no valid dimensions provided, defaulting to 1024x768 loading site... 1024x768

Y produce un archivo llamado screenshot_1024x768.png de la siguiente manera: captura de pantalla_1024x768.png

Por supuesto, foxshot no proporciona una forma de acceder al DOM o acceder al texto que se muestra en la imagen. ¿Alguna sugerencia?

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

0

Va así con titiritero

 //npm i puppeteer const puppeteer = require('puppeteer') !(async () => { //open browser const browser = await puppeteer.launch() //open browser page const page = await browser.newPage() //open url await page.goto('https://www.masslottery.com/tools/past-results/mega-millions?start_date=2021-09-03&end_date=2021-09-28') //wait for table to appear await page.waitForSelector('.multi-col-stacking-table') //iterate over table rows on page const data = await page.$$eval('.multi-col-stacking-table tbody tr', d => d.map(d => ({ //format date as YYYY-MM-DD date: new Date(d.querySelector('.past-results-row-draw-date').innerText).toJSON().slice(0, 10), //collect winning numbers winningNumber: Array.from(d.querySelectorAll('.winning-number-ball-circle, .winning-number-ball-circle-no-border')).map(d => +d.innerText), //get multiplier as number multiplier: +d.querySelector('.winning-number-ball-multiplier').innerText.slice(0, -1), //parse jackpot into number - remove all non-digits and multiply by 1M jackpot: +d.querySelector('.jackpot').innerText.replace(/[^\d]/g, '') * 1e6 })) ) console.log(data) //optional screenshot await page.screenshot({path: 'screenshot.png'}) await browser.close() })() //output /* [ { date: '2021-09-27', winningNumber: [ 18, 30, 43, 68, 69, 22 ], multiplier: 4, jackpot: 22000000 }, { date: '2021-09-23', winningNumber: [ 17, 21, 27, 43, 56, 15 ], multiplier: 3, jackpot: 20000000 }, ... ] */
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!