如何过滤(page。$$ eval)的结果

时间:2019-03-09 08:53:00

标签: node.js puppeteer

我正在使用以下代码从网页中选择所有href:

const hrefs = await page.$$eval('a', as => as.map(a => a.href));

例如,我需要知道如何用仅包含/ product /和/ c /的href过滤那些hrefs?

2 个答案:

答案 0 :(得分:1)

您可以添加Array.prototype.filter()String.prototype.includes()谓词:

const hrefs = await page.$$eval(
  'a',
  as => as.map(a => a.href)
          .filter(href => href.includes('/product/') && href.includes('/c/'))
);

答案 1 :(得分:0)

您可以使用.filter而不是.map方法来实现此目的。

您可以尝试以下操作:

const hrefs = await page.$$eval('a', as => as.filter((d)=>{
                return (d.contains('/c/') && d.contains('/product/'))
              }));