[ 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







你可能感興趣的文章

Radiomics feature aggregation [paper 分享]

Radiomics feature aggregation [paper 分享]

[程式挑戰] 全域變數和區域變數可視範圍 Variable Scope

[程式挑戰] 全域變數和區域變數可視範圍 Variable Scope

test

test






留言討論