puppeteer page.evaluate querySelectorAllは空のオブジェクトを返します
私は操り人形をしようとしています、これはあなたがそれを実行できるサンプルコードです https://try-puppeteer.appspot.com/
問題は、このコードが空のオブジェクトの配列を返すことです
[{}、{}、{}、{}、{}、{}、{}、{}、{}、{}、{}、{}、{}、{}、{}、{}、{ }、{}、{}、{}、{}、{}、{}、{}、{}、{}、{}、{}、{}、{}、{}、{}、{}、 {}、{}、{}、{}、{}、{}、{}、{}、{}、{}、{}、{}、{}、{}、{}、{}、{} 、{}、{}、{}、{}、{}、{}、{}]
私は間違いをしていますか?
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://reddit.com/');
let list = await page.evaluate(() => {
return Promise.resolve(Array.from(document.querySelectorAll('.title')));
});
console.log(JSON.stringify(list))
await browser.close();
Evaluate関数から返される値は、jsonシリアライズ可能である必要があります。 https://github.com/GoogleChrome/puppeteer/issues/303#issuecomment-322919968
解決策は、要素からhref値を抽出して返すことです。
await this.page.evaluate((sel) => {
let elements = Array.from(document.querySelectorAll(sel));
let links = elements.map(element => {
return element.href
})
return links;
}, sel);