Node.js 木偶演员以数字为键,以空对象为值返回对象

Node.js 木偶演员以数字为键,以空对象为值返回对象,node.js,web-scraping,puppeteer,Node.js,Web Scraping,Puppeteer,因此,我正在开发一个web scraper,我需要返回一组链接,用于: const puppeteer = require('puppeteer'); const URL = 'SOME_URL'; const SELECTOR = 'SOME_SELECTOR' const app = async () => { try { const browser = await puppeteer.launch(); const page = await browser

因此,我正在开发一个web scraper,我需要返回一组链接,用于:

const puppeteer = require('puppeteer');

const URL = 'SOME_URL';

const SELECTOR = 'SOME_SELECTOR'

const app = async () => {

  try {
    const browser = await puppeteer.launch();
    const page = await browser.newPage();
    await page.goto(URL,{waitUntil: 'networkidle0'});
    

    await page.waitForSelector(SELECTOR);

    let content = await page.evaluate(()=> {
      
      let episodes = document.querySelectorAll(SELECTOR);
      return episodes;
    })

    console.log(content)
    await browser.close()
  }catch(err) {
    console.log(err)
  }


}
我把它作为输出

  {
  '0': {},
  '1': {},
  '2': {},
  '3': {},
  '4': {},
  '5': {},
  '6': {},
  '7': {},
  '8': {},
  '9': {},
... so on
    }

任何关于为什么会发生这种情况的指针,我都尝试使用其他选择器,甚至在其他URL上也尝试过。

不幸的是,
page.evaluate()
只能传输可序列化的值(大致上,JSON可以处理的值)。由于
document.querySelectorAll()
返回不可序列化的DOM元素集合(它们包含方法和循环引用),集合中的每个元素都将替换为空对象。您需要返回可序列化的值(例如,一个HREF数组)或使用类似于
page.$$(选择器)
ElementHandle
API的内容。

您想要evaluateHandle:

await page.evaluateHandle(() => [...document.querySelectorAll(SELECTOR)])