巧用自動化,抓取資訊併發送微信訊息
在微信群中,經常有一些微信群主定時傳送一些快報。本次將給介紹給大家一種使用自動化實現類似功能的微信機器人的方法。
實現功能介紹
網站https://news.ycombinator.com/作為專業hacker 獲取資訊資訊的重要來源,有不少人經常訪問它。今天教大家做的自動化,是通過自動化的方式將此網站的當前內容儲存到PDF檔案中,之後傳送到微信群分享給群友。
原理大致如下:

使用到的工具
- Puppeteer/">Puppeteer Chrome%2Fpuppeteer" rel="nofollow,noindex">github.com/GoogleChrom…
- CukeTestcuketest.com/
主要程式碼實現
開啟CukeTest,根據業務需求編輯feature檔案:
# language: zh-CN 功能: 自動化微信 自動抓取hacker news 儲存為pdf並分享到微信群。 @puppeteer 場景: 使用puppeteer自動抓取Hacker News並儲存為pdf 假如使用puppeteer開啟"https://news.ycombinator.com/" 同時將當前頁面內容儲存為到PDF檔案中 @WeChat 場景: Windows桌面微信傳送群 假如開啟微信群,選擇文件 當開啟pdf檔案 同時點擊發送,傳送給群友 複製程式碼
作為行為驅動的指令碼,feature檔案可以讓指令碼有非常好的可讀性。

Puppeteer
Puppeteer是 Google Chrome 團隊官方的無介面(Headless)Chrome 工具,它是一個Node.js庫,提供了一個高階的 API 來控制DevTools協議上的無頭版Chrome。用這個庫可以非常方便將頁面匯出為pdf文件。 具體api可以參考文件: github.com/GoogleChrom…
// 主要實現程式碼 ...... //開啟頁面 await page.goto('https://news.ycombinator.com', {waitUntil: 'networkidle2'}); //儲存到pdf await page.pdf({path: 'hn.pdf', format: 'A4'}); ...... 複製程式碼
相比起通過Selenium呼叫Chrome,它的優點是更快,功能更加豐富。
CukeTest
CukeTest是Node.js自動化指令碼的編輯工具,內建有操作Windows控制元件的庫,操作Windows桌面端微信。
使用方法:
為微信Windows桌面端應用建立物件模型檔案,將需要操作的控制元件新增到模型檔案中。關於如何操作Windows控制元件可以參考免費教學視訊( ke.qq.com/course/3473…
呼叫操作物件API
//主要實現程式碼 ...... Given(/^開啟微信群,選擇文件$/, async function () { await model.getVirtual("傳送檔案").click(0, 0, 1); }); When(/^開啟pdf檔案$/, async function () { await model.getEdit("檔名(N):1").set('hn.pdf'); await model.getGeneric("開啟(O)").click(0, 0, 1); }); When(/^點擊發送,傳送給群友$/, async function () { await model.getVirtual("傳送").click(0, 0, 1); }); ...... 複製程式碼
執行
點選執行按鈕即可執行。如果想每天定時執行,可以將這個指令碼配置成定時任務或者Jenkins的Job執行。
總結
在這個例子中,我們使用了Node.js + Cucumber的框架,讓程式碼可讀性更強,使用了Puppeteer作為自動化庫抓取內容,同時使用了CukeTest編輯工具,它同時也提供了Windows自動化的功能。
如果不想傳送PDF,也可以用Puppeteer定時擷取網頁上的文字,傳送到微信中,這樣實時性更強。
CukeTest賦予你不管是Windows,Web,API還是Mobile應用,都能進行自動化的能力。結合豐富的Node.js開源庫,你可以發揮無盡的想象,做各種好玩,有趣的自動化。如果你有好的想法或者自動化過程遇到問題,歡迎來到我們的學習群討論。 QQ群:707467292