【问题标题】:puppeteer to cheerio scraping from dynamic website for specific datapuppeteer 到 Cheerio 从动态网站抓取特定数据
【发布时间】:2020-07-02 21:41:54
【问题描述】:

我想从一个共同基金网站上抓取某些数据,在那里我只能跟踪选择性基金而不是全部。

所以我尝试使用 puppeteer 来抓取网站生成的动态表。我设法拿到了桌子,但是当我尝试将其解析为 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

而不是全部。不知道我怎么能只用 puppeteer 做到这一点?

【问题讨论】:

    标签: node.js web-scraping puppeteer cheerio


    【解决方案1】:

    那个页面已经有jQuery了,比cheerio还要好:

    const rows = await page.evaluate( () => {
      return $('.fundtable tr').get().map(tr => $(tr).find('td').get().map(td => $(td).text()))
    }
    

    【讨论】:

    • 我怎样才能过滤掉结果,只得到基于缩写 - PAIF - PAGF - PCIF 的特定数据库?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-20
    • 1970-01-01
    • 2019-07-29
    • 1970-01-01
    • 2019-01-18
    相关资源
    最近更新 更多