用雲函式快速實現圖片爬蟲

知曉雲發表於2018-11-02

本文會跟大家介紹,如何在本地使用知曉云云函式 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 
複製程式碼

執行結果如下:

用雲函式快速實現圖片爬蟲
使用以下的命令來測試:

用雲函式快速實現圖片爬蟲
執行結果如下:

用雲函式快速實現圖片爬蟲

執行成功後即可在知曉雲檔案模組看到抓取到的圖片

用雲函式快速實現圖片爬蟲

相關文章