[ Day 02 ] 用 Puppeteer 來做自動化機器人吧 (一) : 安裝篇


最近工作上碰到優化一個自動化機器人的項目,是用 Puppeteer 實作的,因為之前沒碰過 Node.js,所以剛好研究了一下。

簡單介紹一下 Puppeteer

Puppeteer 是 Node.js 的一個函式庫,可用來操控瀏覽器,是一個蠻新的工具,查了一下似乎是 Google 的專案 ( 難怪會開啟 Chromium ),那操控瀏覽器可以幹嘛呢? 可以應用的範圍包括:前端的自動化測試、爬蟲、表單提交 ( 如登入時輸入帳號密碼再按下送出 ) 等。

Selenium vs Puppeteer

之前有使用過 Python 搭配 Selenium 的經驗,我認為如果是做爬蟲、自動化操作的部分用 Puppeteer 非常方便,安裝還蠻簡單快速,API 也容易使用。但因為他只有支援 Chromium,再做前端畫面的自動化測試,我想就不太適合。以下是我用我的使用體驗做的比較表,提供參考:

Puppeteer Selenium
支援瀏覽器 Chromium 多種瀏覽器
支援語言 Node.js 多種語言皆適用
安裝 方便快速 稍微麻煩
使用 易上手 想較難上手

開始來安裝吧!

由於 Puppeteer 是用 Node.js 寫的,所以必須要先安裝 Node。

  1. 可以至官網 下載
  2. 如果用 mac 可以使用 https://nodejs.org/en/

安裝完後可以在 terminal 輸入 node -v 檢查是否有安裝成功

接著到要開發的專案,輸入 npm init -y 初始化專案,接著 npm i puppeteer,安裝的時候會發現它會連同 Chromium 一同安裝。

安裝成功後,我們就可以來試寫看看囉。

第一隻機器人

新增一個檔案 main.js,並複製以下程式碼:

const puppeteer = require('puppeteer');

(async () => {

  // 開啟 browser
  const browser = await puppeteer.launch({
        headless: false
  });
  // 新增分頁
  const page = await browser.newPage();
  // 到部落格
  await page.goto(`https://b123105.blogspot.com/`);
  // 等待訂閱按鈕出現
  await page.waitForSelector("button[class='subscribe-button pill-button']");
  // 點擊訂閱按鈕
  await page.click("button[class='subscribe-button pill-button']");
})();

接著到 terminal 輸入 node main.js 接下看看會發生什麼事吧!
( 偷偷置入自己的部落格 )

總結

這邊先賣個關子,下一篇會來解釋一下這段程式碼,接下來會實作一隻機器人,再請多多支持,謝謝!

#node.js #Puppeteer #Bot
此系列並沒有設定特定的主題,會將一些工作上、或平常開發 side project 的研究、發現、心得記錄下來。 希望能幫助到有遇到相同需求、相同問題的朋友,一同交流學習。






Related Posts

跨領域自學程式設計常見問題解析 FAQ

跨領域自學程式設計常見問題解析 FAQ

#01 Go 語言 環境變數 

#01 Go 語言 環境變數 

[ week3 ] ES6 語法

[ week3 ] ES6 語法

用 Python 自學資料科學與機器學習入門實戰:Matplotlib 基礎入門

用 Python 自學資料科學與機器學習入門實戰:Matplotlib 基礎入門

[筆記] JavaScript: Understanding the Weird Parts - Build your own lib/framework

[筆記] JavaScript: Understanding the Weird Parts - Build your own lib/framework

一起來讀 CRAM - A Cognitive Robot Abstract Machine for Everyday Manipulation in Human Environments

一起來讀 CRAM - A Cognitive Robot Abstract Machine for Everyday Manipulation in Human Environments



Comments