本文會跟大家介紹,如何在本地使用知曉云云函式 API 與 cheerio 開發一個圖片爬蟲,並使用 webpack 與 mincloud 將程式碼打包並上傳部署到知曉雲。
技術棧:
- 程式碼打包工具:webpack@4.20.2
- 部署工具:mincloud@1.0.2
- html 解析:cheerio@1.0.0-rc.2
- 其他:知曉雲 Node SDK(雲函式內建)
專案檔案結構:
最終我們會使用以下兩個命令來部署與測試
一、webpack 配置
由於使用的是 v4 的 webpack,所以只需要很少的配置就可以了。
二、package script 配置
新增 deploy 指令碼,如下:
三、入口檔案
雲函式作為一個模組在沙箱環境中被呼叫執行,該模組需要暴露出一個 main 方法,模組程式碼結果如下:
我們的 webpack 入口檔案需要暴露出一個函式(簽名為:function (event, callback)),打包後就可以生成一個給個跟上面一致的模組檔案(在 webpack.config.js 中已經定義了)。所以我們的入口檔案主要結構如下:
四、爬蟲
這裡分為 4 個步驟:
- 抓取網頁
- 解析頁面,抓出所有 img 標籤中的 src
- 將圖片下載下來
- 將下載下來的圖片上傳到知曉雲
使用知曉雲 Node SDK 的 request 方法將網頁下載下來(不能直接使用其他第三方 request 包):
使用 cheerio 解析 html ,抓出所有的圖片 url:
下載圖片:
上傳圖片到知曉雲:
完整程式碼如下:
五、部署並測試
跟 npm 一樣,部署前需要先登入,請參照文件配置。 使用以下命令即可將雲函式部署到知曉雲。
npm run deploy
複製程式碼
執行結果如下:
使用以下的命令來測試: 執行結果如下:執行成功後即可在知曉雲檔案模組看到抓取到的圖片