首页 > 解决方案 > 一次扫描多页

问题描述

我有一个木偶问题。我有一个带有链接的数组

let links = ["...", "...", "..."];

那是大约30个链接。我想一次刮掉它们Promise.all()

let descriptions = await Promise.all(
    links.map((url) => getDescription(page, url))
);

每个页面都有一个描述,但由于某种原因,我的descriptions数组中填充了 30 个相同的描述。

这是为什么?我需要一个一个刮吗?

描述功能:

export async function getDescription(page, url) {
  await page.goto(url);
  let selector = ".C4VMK > span";
  return page.$eval(selector, (handle) => handle.textContent);
}

标签: javascriptpuppeteer

解决方案


我是这样管理的:

我创建一个新选项卡并从中打开该 URL

export async function getDescription(browser, url) {
  let page = await browser.newPage();
  await page.goto(url);
  let selector = ".C4VMK > span";
  let result = await page.$eval(selector, (handle) => handle.textContent);
  page.close();
  return result;
}

推荐阅读