import puppeteer from 'puppeteer' async function scrapeProduct(url) { const browser = await puppeteer.launch() const page = await browser.newPage() await page.goto(url) const element = await page.waitForSelector('input[type="hidden"][name="abuseID"]', { hidden: true, timeout: 15000 }) const abuseID = await page.evaluate(element => element.value, element) console.log(abuseID) } scrapeProduct('https://steamcommunity.com/id/lupusRe')
No sé dónde me estoy equivocando, pero recibo un error de
file:///C:/Users/charl/Desktop/Code/abg/steam-search/node_modules/puppeteer/lib/esm/puppeteer/common/ExecutionContext.js:282 throw new Error('Evaluation failed: ' + getExceptionMessage(exceptionDetails)); ^ Error: Evaluation failed: TypeError: Cannot read properties of null (reading 'value') at pptr://__puppeteer_evaluation_script__:1:21 at ExecutionContext._ExecutionContext_evaluate (file:///C:/Users/charl/Desktop/Code/abg/steam-search/node_modules/puppeteer/lib/esm/puppeteer/common/ExecutionContext.js:282:15) at processTicksAndRejections (node:internal/process/task_queues:96:5) at async ExecutionContext.evaluate (file:///C:/Users/charl/Desktop/Code/abg/steam-search/node_modules/puppeteer/lib/esm/puppeteer/common/ExecutionContext.js:114:16) at async scrapeProduct (file:///C:/Users/charl/Desktop/Code/abg/steam-search/test.js:13:21)
Mi objetivo es poder obtener la ID de Steam en la siguiente etiqueta <input type="hidden" name="abuseID" value="76561198036553525>"
Estoy abierto a usar otras cosas además de titiritero, pero es solo lo principal que he estado usando para el web scraping.
Esto está en el sitio web oficial de la comunidad Steam si eso importa.
y usa page.$x(Xpath)
Editar: he intentado un par de cosas y parece que puedes obtener steamID de personas a través de una etiqueta <script>
import puppeteer from 'puppeteer' async function scrapeProduct(url) { const browser = await puppeteer.launch() const page = await browser.newPage() await page.goto(url); const text = await page.evaluate(() => Array.from(document.querySelectorAll('script'), element => element.textContent)); let spl = text[38].split(','); console.log(spl[1]) browser.close() } scrapeProduct('https://steamcommunity.com/id/DaYanack')
prueba esto y dime si funciona