从动态网站抓取cheerio来获取特定数据的人

问题描述 投票:0回答:1

我想从共同基金网站上删除某些数据,在该网站上我只能跟踪选择性基金而不是全部跟踪。

因此,我试图伪造者来抓取该网站生成的动态表。我设法得到表,但是当我尝试将其解析为cheerio时,似乎什么也没发生

const scrapeImages = async (username) => {
   console.log("test");
   const browser = await puppeteer.launch({
      args: ['--no-sandbox']
    });
    const page = await browser.newPage();

    await page.goto('https://www.publicmutual.com.my/Our-Products/UT-Fund-Prices');
   await page.waitFor(5000);

  const data = await page.evaluate( () => {

        const tds = Array.from(document.querySelectorAll('div.form-group:nth-child(4) > div:nth-child(1) > div:nth-child(1)'))
    return tds.map(td => td.innerHTML)
    });

    await browser.close();

    console.log(data);

    let $ = cheerio.load(data);

      $('table > tbody > tr > td').each((index, element) => {

        console.log($(element).text());

    });

 };

  scrapeImages("test");

[我最终不确定如何直接使用puppeteer进行此操作,而不是直接引导至cheerio进行刮取,例如,如果您在此处访问网上https://www.publicmutual.com.my/Our-Products/UT-Fund-Prices,我也只想刮除选定的资金

我只想从缩写中获得资金-PAIF-PAGF-PCIF

而不是全部。不知道如何只用木偶做这件事?

node.js web-scraping puppeteer cheerio
1个回答
0
投票

该页面已经有jQuery,它甚至比cheerio更好:

const rows = await page.evaluate( () => {
  return $('.fundtable tr').get().map(tr => $(tr).find('td').get().map(td => $(td).text()))
}
© www.soinside.com 2019 - 2024. All rights reserved.