首页 > 解决方案 > Puppeteer:使用第二场比赛与 page.evaluate

问题描述

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

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

我的问题是,我怎样才能继续选择函数的第二次出现而不是第一次出现,它返回一个空对象。

谢谢。

我的代码:

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":};

标签: node.jsweb-scrapingpuppeteer

解决方案


请试试这个,它应该工作。

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)
}

推荐阅读