Node.js 木偶师:使用第二个匹配page.evaluate

Node.js 木偶师:使用第二个匹配page.evaluate,node.js,web-scraping,puppeteer,Node.js,Web Scraping,Puppeteer,我正在使用Puppeter在线检索数据,并且面临一个问题 两个函数具有相同的名称并返回序列化对象,第一个函数返回空对象,但第二个函数确实包含我要针对的数据 我的问题是,如何继续选择函数的第二次出现,而不是返回空对象的第一次出现 谢谢 我的代码: const puppeteer = require('puppeteer'); const cheerio = require('cheerio'); const Variants = require('./variants.js'); const F

我正在使用Puppeter在线检索数据,并且面临一个问题

两个函数具有相同的名称并返回序列化对象,第一个函数返回空对象,但第二个函数确实包含我要针对的数据

我的问题是,如何继续选择函数的第二次出现,而不是返回空对象的第一次出现

谢谢

我的代码:

const puppeteer = require('puppeteer');
const cheerio = require('cheerio');

const Variants = require('./variants.js');
const Feedback = require('./feedback.js');

async function Scraper(productId, feedbackLimit) {
  const browser = await puppeteer.launch();
  const page = await browser.newPage();

  /** Scrape page for details */
  await page.goto(`${productId}`);
  const data = (await page.evaluate()).match(/window.runParams = {"result/)

  const data = data.items

 await page.close();
 await browser.close();


  console.log(data);
  return data;
}

module.exports = Scraper;
网站源代码:

window.runParams = {};
window.runParams = {"resultCount":19449,"seoFeaturedSnippet":};

请试试这个,它应该有用

const data = await page.content();
const regexp = /window.runParams/g;
const matches = string.matchAll(regexp);
    
for (const match of matches) {
  console.log(match);
  console.log(match.index)
}

使用regex匹配“runParams”函数,只需进行第二次匹配。搜索如何在正则表达式中使用“matches”。我尝试了这个方法,但没有成功:const data=(wait page.evaluate()).match(/window.runParams={“result/)你能提供完整的代码吗?我会尽力帮助的。我刚刚编辑了这篇文章来显示完整的代码。你可以添加“数据”的完整值吗?好的,它可以工作!我可以找到数据;非常感谢你!!很高兴能帮上忙:)