Notes
Nuxt3 App
Notes
About

筆記內容

  • 工具
  • 實作重點
  • 後續目標
  • 參考資源

相關筆記

  • NodeJS架設Web服務

資料爬取與儲存

參考鐵人賽的系列文章,使用 NodeJS 來實作網頁資料爬取和儲存於 google 表單,在嘗試過程中把系列文的 selenium-webdriver 套件改用 puppeteer 和 cheerio,而該系列文主要針對的是臉書和 IG 的追蹤數爬取,我則針對 yahoo 入口頁面的新聞和 momo 購物網的商品搜尋資訊。

工具

  • puppeteer 提供基於瀏覽器操作行為的 API,也可以截取圖片、產生 PDF。使用概念上要瞭解瀏覽器渲染 DOM 的生命週期,以及對於網站 url 的規則去分析。在資料公開的網站,url 的 path 和 query 部份,通常就指向對應的資料內容。

momo 搜尋產品頁 https://www.momoshop.com.tw/search/searchShop.jsp?keyword=$keyword

google 搜尋頁 https://www.google.com.tw/search?q=$keyword

  • cheerio 用來處理網頁的 dom 結構,功能和 jQuery 的選取和操作相近。在這次嘗試過程中,是拿來抓取 dom 的資料。
  • googleapis 用來使用線上 google 表單的操作,官方提供的 API 相當龐雜。這次有使用的部分是基本的寫入資料、新增 sheet。在概念上,它可以做為一個線上儲存資料的載體。

    使用重點是在google developer console要先開通 google sheet api 服務,並設定服務權限,取得憑證(credentials.json)

實作重點

  • puppet.js 可以理解為瀏覽器操作流程
() => {  const puppeteer = require('puppeteer');  async function puppetGetWebContent(webUrl) {    const browser = await puppeteer.launch({      args: ['--no-sandbox', '--disable-setuid-sandbox'],      ignoreDefaultArgs: ['--disable-extensions'],      headless: true,    });    const page = await browser.newPage();    await page.goto(webUrl);    const content = await page.content();    await browser.close();    return content;  }};
  • momoCrawler.js 爬取 momo 產品搜尋頁,並把前五項的商品連結記下,再前往商品頁中爬取商品資訊。
  • yahooCrawler.js & googleSheets.js 爬取資料後,將它存放到線上 google 表單。

後續目標

  • 利用 express 啟 API 服務
  • 部署到主機
  • 使用排程

參考資源

  • 行銷廣告、電商小編的武器,FB & IG 爬蟲專案從零開始