娃K2了,明年就要上小学了,在新加坡幼儿园期间,学校都会将孩子的上学和放学的打卡签到以及活动的信息保留下来,有图片有视频也有文本数据。我打算使用puppeteer来爬取这些数据,给娃建立一个child care center的资料库。

所以我选择用[puppeteer](https://pptr.dev/)来爬取。

为什么用puppeteer

  • puppeteer虽然只支持chromium内核的浏览器,但是可以使用chrome浏览器自带的recorder,记录操作来生成puppeteer的相关代码。后续只要调试就可以跑了。
  • 如果有跨浏览器需求,可以考虑用[playwright](https://playwright.dev/)
  • 不用去考虑是否前端动态渲染的情况,puppeteer都可以支持。
  • 某些信息页面可以保存为pdf。
  • 数据量少,没什么性能要求,个人比较熟悉puppeteer就可以直接用了。

登录页面

细节

调试

在本地调试的时候,可以将headless设置为false,看到的是一个完整的页面,可以看到整个页面的执行情况。

  const browser = await puppeteer.launch({
    // headless: false,
    defaultViewport: null,
  });

网络延迟造成的定位失败问题

最简单的处理方式就是多等一下。

 await sleep(500);

计划爬取的数据

  • 签到签出记录的照片

  • 活动视频、照片和文本

  • profile

代码链接

sparkletots_scraper