Estoy tratando de desechar este sitio web para el seguidor https://mojapp.in/@piyanka_mongia
Pero las clases aquí se ven realmente extrañas como esta "Pstart(20px).Pstart(40px)"
Mi programa webscrapper (que por cierto funciona sin ningún problema en otros sitios) está arrojando este error.
Error: la evaluación falló: DOMException: no se pudo ejecutar 'querySelector' en 'Documento': 'Pstart(20px).Pstart(40px)--md' no es un selector válido.
la configuración básica del titiritero es de este sitio web https://www.digitalocean.com/community/tutorials/how-to-scrape-a-website-using-node-js-and-puppeteer
¿¿Cómo puedo resolver este problema??
código de pageScraper
const scraperObject = { url: 'https://mojapp.in/@piyanka_mongia', async scraper(browser) { let page = await browser.newPage(); console.log(`Navigating to ${this.url}...`); // Navigate to the selected page await page.goto(this.url); // Wait for the required DOM to be rendered await page.waitForSelector('.Pstart(20px)'); let nimbers = await page.$eval('#svelte > div.Bgc\(black\).C\(white\) > main > div.D\(f\).Mb\(40px\).Px\(\$xs\) > div.Pstart\(20px\).Pstart\(40px\)--md > div.D\(f\).Fxw\(w\).My\(\$lg\) > div:nth-child(1) > h4', text => text.textContent) console.log(nimbers); } } module.exports = scraperObject;CSS requiere que los caracteres como ( y ) se escapen con el carácter \ , por lo que para las clases con esos nombres terminas con selectores como .Pstart\(20px\) .
El problema aquí es que las cadenas de JavaScript también tratan \ como el carácter de escape. La cadena JS '.Pstart\(20px\)' representa la cadena .Pstart(20px) , que nuevamente no es un selector de CSS válido ya que los paréntesis no se escapan.
La solución es escapar dos veces de las clases: la cadena JS '.Pstart\\(20px\\).Pstart\\(40px\\)--md' representa con precisión .Pstart\(20px\).Pstart\(40px\)--md .