用 JavaScript 進行網頁爬蟲:完整入門教學

最後更新於 July 28, 2025

當我剛開始寫自動化工具的時候,真的沒想到自己會像數位考古學家一樣,花這麼多時間在研究網站的 HTML 結構。不過到了 2025 年,網路還是全世界最大、最亂的資料寶庫。不管你是業務高手、電商老闆,還是單純愛挑戰的工程師,網頁爬蟲早就變成把公開網頁變成商業價值的秘密武器。如果你跟我一樣,肯定也想過:「只靠 JavaScript,真的能自己寫出網頁爬蟲嗎?」答案是:絕對沒問題。但值不值得?我們直接來實作看看。

這篇教學會帶你從零開始,用 JavaScript 打造屬於自己的網頁爬蟲,從靜態 HTML 解析到動態渲染的網站都會教到。身為過來人,我也會分享什麼時候該放下程式碼,直接交給像 這種人工智慧工具幫你省時省力。準備好動手做了嗎?我們開始吧!

什麼是用 JavaScript 網頁爬蟲?

先從基本觀念說起。網頁爬蟲就是自動化從網站抓資料的過程。比起手動複製貼上(老實說,這比看油漆乾還無聊),你可以寫一個「爬蟲」程式,自動幫你抓網頁並提取需要的資訊。

JavaScript 在這裡扮演什麼角色?JavaScript 是網頁的語言,不只在瀏覽器跑,也能透過 Node.js 在你的電腦或伺服器上執行。所謂「用 JavaScript 網頁爬蟲」,通常就是用 Node.js 寫腳本,流程大致如下:

  • 發送 HTTP 請求抓網頁內容
  • 解析 HTML,找到你要的資料
  • 有時還要自動操作瀏覽器,處理那些需要 JavaScript 動態載入的網站

網頁大致分兩種:

  • 靜態頁面:資料直接寫在 HTML 裡,像簡單的商品列表。
  • 動態頁面:資料要等網頁自己的 JavaScript 執行後才會出現,像無限捲動的社群牆或 AJAX 儀表板。

JavaScript 生態系的各種函式庫都能搞定這兩種情境。靜態頁面直接抓 HTML 解析,動態頁面就自動化瀏覽器,模擬真實用戶看到的內容。

為什麼用 JavaScript 網頁爬蟲對企業很重要?

說真的,沒有人會純粹為了好玩寫爬蟲(除了我週末會這樣玩)。企業會做爬蟲,是因為這能快速取得洞察、名單和競爭優勢。原因如下:

  • 省時間:自動化爬蟲能在幾分鐘內收集成千上萬筆資料,省下團隊大量人工複製貼上的時間 ()。
  • 決策更快更準:即時資料讓你能快速反應市場變化、調整價格、搶先發現趨勢 ()。
  • 提升準確度:自動擷取大幅減少人為錯誤,資料更乾淨可靠 ()。
  • 競爭情報:追蹤競爭對手價格、監控評論、分析市場趨勢,讓公開網路變成你的專屬情報室。
  • 名單開發:自動建立潛在客戶名單、豐富 CRM 資料、發掘新商機,全部自動化完成。

下面這張表快速整理商業應用:

應用場景商業效益(舉例)
競爭價格追蹤優化定價提升營收。John Lewis 利用爬蟲監控競爭對手價格,銷售額提升 4%
市場拓展研究擬定在地化策略帶動成長。ASOS 利用爬取的在地市場資料,國際銷售翻倍
流程自動化大幅減少人工作業。一個自動化爬蟲一週處理 12,000+ 筆資料,省下數百小時工時。

還有一個超驚人的數據: 來收集公開資料,。這早就不是小眾技術,而是主流商業利器。

JavaScript 網頁爬蟲環境快速建置

來點實作吧。如果你想自己寫爬蟲,先把開發環境準備好。步驟如下:

  1. 安裝 Node.js(含 npm)

    下載 LTS 版本,這會同時安裝 Node.js 執行環境和 npm 套件管理器。

    • 驗證安裝:

      1node -v
      2npm -v
  2. 建立專案資料夾

    新建一個資料夾(像 web-scraper-demo),在終端機進入該資料夾,執行:

    1npm init -y

    這會產生 package.json,方便管理套件。

  3. 安裝必備函式庫

    新手包如下:

    • Axios:HTTP 請求工具
      npm install axios
    • Cheerio:類 jQuery 的 HTML 解析器
      npm install cheerio
    • Puppeteer:無頭 Chrome 自動化(動態網站用)
      npm install puppeteer
    • Playwright:多瀏覽器自動化(支援 Chromium、Firefox、WebKit)
      npm install playwright 然後執行:
      npx playwright install(下載瀏覽器執行檔)

這些工具比較如下:

函式庫用途與優勢適用情境
Axios輕量級 HTTP 請求工具。僅適用靜態頁面。抓取新聞、商品頁原始 HTML。
CheerioDOM 解析,支援 jQuery 選擇器。適合靜態內容。擷取靜態 HTML 中所有

標題或連結。

Puppeteer無頭 Chrome 自動化。可執行頁面 JS、模擬點擊、截圖。抓取現代 Web App、需登入的網站。
Playwright多瀏覽器自動化,內建自動等待,適合複雜場景。跨 Chrome、Firefox、Safari 引擎抓取。

靜態頁面建議用 Axios + Cheerio,動態或互動性高的網站則推薦 Puppeteer 或 Playwright ()。

用 JavaScript 打造簡易網頁爬蟲

來實作一個基本範例。假設你想從「Books to Scrape」這個靜態網站抓取書名和價格(這個網站超適合新手練習)。

步驟 1: 先用瀏覽器檢查網頁結構。你會發現每本書都在 <article class="product_pod"> 裡,書名在 <h3>,價格在 <p class="price_color">

步驟 2: 程式碼如下:

1const axios = require('axios');
2const cheerio = require('cheerio');
3(async function scrapeBooks() {
4  try {
5    // 1. 抓取網頁 HTML
6    const { data: html } = await axios.get('http://books.toscrape.com/');
7    // 2. 用 Cheerio 解析 HTML
8    const $ = cheerio.load(html);
9    // 3. 選取並擷取目標資料
10    const books = [];
11    $('.product_pod').each((_, element) => {
12      const title = $(element).find('h3 a').attr('title');
13      const price = $(element).find('.price_color').text();
14      books.push({ title, price });
15    });
16    // 4. 輸出結果
17    console.log(books);
18  } catch (error) {
19    console.error('Scraping failed:', error);
20  }
21})();

這段程式在做什麼?

  • 抓取:用 Axios 取得 HTML。
  • 解析:Cheerio 載入 HTML,支援 CSS 選擇器。
  • 擷取:針對每個 .product_pod,抓出書名和價格。
  • 輸出:印出書籍資料陣列。

選擇器小技巧:

用瀏覽器開發者工具(右鍵→檢查)找出獨特的 class 或標籤。Cheerio 支援大多數 CSS 選擇器,能精準定位元素。

解析與資料擷取技巧

根據我的經驗,這些小撇步很實用:

  • 文字與屬性:用 .text() 取內文,用 .attr('屬性名') 取屬性(像 title、href)。
  • 資料型態:擷取時就清理資料,例如去除貨幣符號、轉數字、格式化日期。
  • 缺漏資料:擷取前先檢查元素是否存在,避免報錯。
  • 陣列處理:用 .each().map() 迴圈組成結果陣列。

資料抓下來後,可以寫入 CSV、JSON,甚至直接存進資料庫,彈性很大。

抓取動態網站:Puppeteer & Playwright 實戰

接下來挑戰更高難度的 動態網站。這類頁面資料要等 JavaScript 執行後才會出現,像社群動態牆、儀表板、或有「載入更多」按鈕的網站。

為什麼要用無頭瀏覽器?

單純 HTTP 請求只會拿到骨架 HTML。Puppeteer、Playwright 這類無頭瀏覽器能:

  • 啟動真實瀏覽器(但不顯示畫面)
  • 執行網頁的 JavaScript
  • 等待內容載入
  • 擷取渲染後的資料

Puppeteer 範例:

1const puppeteer = require('puppeteer');
2(async function scrapeQuotes() {
3  const browser = await puppeteer.launch({ headless: true });
4  const page = await browser.newPage();
5  await page.goto('https://quotes.toscrape.com/js/', { waitUntil: 'networkidle0' });
6  await page.waitForSelector('.quote');  // 等待 quotes 出現
7  const quotesData = await page.$$eval('.quote', quoteElements => {
8    return quoteElements.map(q => {
9      const text = q.querySelector('.text')?.innerText;
10      const author = q.querySelector('.author')?.innerText;
11      return { text, author };
12    });
13  });
14  console.log(quotesData);
15  await browser.close();
16})();

這段程式在做什麼?

  • 啟動無頭 Chrome
  • 進入目標頁面並等待網路活動結束
  • 等待 .quote 元素出現
  • 從 DOM 擷取名言與作者

Playwright 用法幾乎一樣,還支援多瀏覽器與自動等待功能,適合複雜場景 ()。

工具選擇:Puppeteer vs. Playwright

兩者都很適合動態爬蟲,選擇建議如下:

  • Puppeteer
    • 主要支援 Chrome/Chromium(部分支援 Firefox)
    • 適合只需抓 Chrome 的情境,簡單好上手
    • 社群大、外掛多(像 stealth 模式)
  • Playwright
    • 支援多瀏覽器(Chromium、Firefox、WebKit/Safari)
    • 官方支援多語言(JS、Python、.NET、Java)
    • 內建自動等待、易於處理多分頁
    • 複雜或跨瀏覽器需求首選

只抓單一網站且 Chrome 足夠,Puppeteer 最快最簡單。需跨瀏覽器或更強自動化,Playwright 更勝一籌 ()。

JavaScript 網頁爬蟲常見挑戰與解法

這裡才是真正的挑戰開始(也就是「為什麼我的爬蟲凌晨兩點突然壞掉?」)。網頁爬蟲不只是寫程式,還要面對各種障礙:

  • IP 封鎖與速率限制:同一 IP 請求太多會被擋,建議用代理伺服器並輪換 ()。
  • 驗證碼與機器人偵測:網站會用 CAPTCHA、指紋辨識、陷阱元素。可放慢請求速度、用 stealth 外掛或第三方解碼服務。
  • 動態內容與 AJAX:有時可直接呼叫網站的 API(可從網路紀錄找出)。
  • 頁面結構變動:網站常改 HTML,建議選擇器模組化,方便維護。
  • 效能瓶頸:大量抓取時要用併發,但別讓自己電腦或目標網站當機。

最佳實踐:

  • 請求加延遲,避免被封
  • 設定真實的 user-agent
  • 大規模爬蟲用代理
  • 詳細記錄 log,方便除錯
  • 尊重 robots.txt 與網站服務條款

記住:爬蟲永遠在追趕變化。網站會進化,反爬技術也會升級,你的腳本也要隨時調整 ()。

除錯與維護建議

  • 選擇器模組化:把 CSS 選擇器集中管理,方便日後更新。
  • 詳細日誌:記錄進度與錯誤,快速定位問題。
  • GUI 除錯:自動化瀏覽器時可開啟畫面觀察流程。
  • 錯誤處理:用 try/catch 與重試機制提升穩定性。
  • 定期測試:設警示,爬蟲異常時能即時發現。
  • 版本控管:用 Git 管理程式碼,方便回溯。

即使如此,維護多個自訂爬蟲還是很花時間,這也是越來越多團隊轉向 AI 無程式碼解決方案的原因。

什麼時候該考慮無程式碼方案?Thunderbit vs. JavaScript 爬蟲

說真的,不是每個人都想花週末 debug 選擇器或搞代理伺服器。這時就輪到 這類 AI 網頁爬蟲 Chrome 擴充套件登場。

Thunderbit 怎麼用?

  • 安裝 Chrome 擴充套件
  • 打開任一網頁,點擊「AI 建議欄位」
  • Thunderbit AI 會自動讀取頁面、建議欄位並擷取資料
  • 支援動態頁面、子頁、文件、PDF 等
  • 一鍵匯出到 Google Sheets、Airtable、Notion 或 CSV,完全免寫程式

來看比較表:

比較面向JavaScript 爬蟲(自行寫程式)Thunderbit(無程式碼 AI 工具)
建置時間每個爬蟲需數小時(寫程式、除錯、環境設定)每個網站只需幾分鐘—安裝、點擊、完成
學習門檻需懂 JS/Node、HTML/CSS、爬蟲函式庫、除錯完全免寫程式,介面直覺,AI 引導
維護成本網站變動需自行修正腳本(持續工程投入)AI 自動適應版型變化,維護負擔極低
協作分享只能分享程式或 CSV,非工程師難上手一鍵匯出 Google Sheets、Airtable、Notion,團隊輕鬆協作

Thunderbit AI 還能在擷取時自動摘要、分類、翻譯資料,這些功能用傳統程式要額外開發 ()。

java1.jpeg

實務情境:哪種方式適合你的團隊?

  • 情境一:開發者,複雜專案

    你要打造一個彙整多個求職網站職缺的產品,需要自訂邏輯、部署在自家伺服器。自己寫爬蟲最合適,完全掌控、可最佳化效能、直接串接後端。

  • 情境二:商務團隊,急需資料

    你是行銷經理,今天就要從多個名錄抓潛在客戶名單。沒寫程式經驗,也沒時間等工程師。Thunderbit 最適合:點一點、匯出 Google Sheets,一小時內搞定 ()。

  • 情境三:混合模式

    有時團隊會先用 Thunderbit 快速原型或處理臨時需求,若成為長期需求再投入自訂開發。或是工程師先寫好爬蟲,後續交給非工程師用 Thunderbit 模板維護。

怎麼選?

  • 需要高度自訂、技術能力足、想完全掌控—自己寫程式。
  • 追求速度、簡單、團隊協作—Thunderbit 無敵快。
  • 很多團隊兩者並用:核心系統寫程式,臨時或商務需求用 Thunderbit。

資料匯出、自動化與協作:爬蟲的下一步

資料抓下來只是開始,後續怎麼用才是關鍵。

用 JavaScript 寫的爬蟲:

  • 用 Node 的 fs 模組寫入 CSV/JSON
  • 存進資料庫或呼叫 API(像 Google Sheets API)
  • 用 cron job 或雲端函式排程自動執行
  • 分享資料需傳檔案或自建儀表板

用 Thunderbit:

  • 一鍵匯出 Google Sheets、Airtable、Notion 或 CSV ()
  • 內建排程功能—設定好自動更新,完全免維護
  • 團隊可共用模板,結果即時協作
  • 內建 AI 後處理(摘要、分類、翻譯)

想像一下,每天自動抓競爭對手價格,Google Sheet 早上自動更新—不用寫程式、不用手動操作,這就是 Thunderbit 解鎖的高效流程。

重點整理:用 JavaScript 實現商業級網頁爬蟲

總結幾個重點:

  • JavaScript 是強大的爬蟲工具:結合 Node.js、Axios、Cheerio、Puppeteer、Playwright,幾乎所有網站都能抓 ()。
  • 商業價值才是重點:爬蟲的目的是更快決策、提升效率、搶佔競爭優勢 ()。
  • 選對工具很重要:靜態頁面用輕量工具,動態頁面用無頭瀏覽器。
  • 預期挑戰:IP 封鎖、驗證碼、網站變動都是日常—用代理、stealth 技巧、模組化程式碼應對。
  • 維護成本不可忽視:要隨時更新腳本,或考慮 AI 工具自動適應 ()。
  • 無程式碼工具 Thunderbit 加速成果:對非工程師或臨時需求,Thunderbit 的 AI、子頁爬取、一鍵匯出讓人人都能用爬蟲。
  • 整合與協作很重要:確保資料能流入團隊常用工具—Google Sheets、Airtable、Notion 或 CRM。

最後提醒:

網路上充滿寶貴資料,只要懂得抓取,你就領先一步。不論是自己用 JavaScript 寫爬蟲,還是交給 Thunderbit AI 自動處理,重點是把原始資料轉化為商業價值。兩種方式都可以試試,找到最適合你的工作流程。記住:最好的爬蟲,就是能在你需要時,給你正確答案的那一個。

想體驗 Thunderbit 嗎?,感受網頁爬蟲的簡單。想學更多?歡迎瀏覽 ,獲取更多自動化實戰技巧與案例。

常見問題

1. 什麼是 JavaScript 網頁爬蟲?它怎麼運作?

JavaScript 網頁爬蟲是指利用 Node.js、Axios、Cheerio、Puppeteer 或 Playwright 等工具,自動抓取並擷取網站資料。靜態頁面可用 HTTP 請求與 HTML 解析,動態頁面則需用無頭瀏覽器模擬用戶互動。

2. 為什麼企業要用 JavaScript 做網頁爬蟲?

網頁爬蟲能幫企業省下大量時間、減少人工、提升資料準確度,還能即時獲取競爭情報。常見應用包括名單開發、價格追蹤、市場研究、銷售自動化,是數據驅動決策的利器。

3. JavaScript 爬蟲常用哪些工具與函式庫?

  • Axios:抓取靜態頁面的 HTTP 請求工具。
  • Cheerio:解析與查詢靜態 HTML。
  • Puppeteer:自動化 Chrome,擷取動態內容。
  • Playwright:多瀏覽器自動化,功能強大。

4. 什麼時候該用 Thunderbit,而不是自己寫 JavaScript 爬蟲?

當你想快速、免寫程式抓取資料,不想維護腳本時,Thunderbit 是最佳選擇。適合商務團隊、臨時專案、協作需求。Thunderbit 能處理動態內容、子頁,並直接匯出到 Google Sheets、Airtable 等工具。

5. JavaScript 網頁爬蟲最大挑戰有哪些?怎麼解決?

常見挑戰有 IP 封鎖、驗證碼、頁面結構變動、效能限制。可用代理、stealth 外掛、瀏覽器自動化、模組化程式碼與重試機制解決。或直接用 Thunderbit,讓 AI 幫你自動避開這些障礙。

體驗人工智慧網頁爬蟲
Shuai Guan
Shuai Guan
Co-founder/CEO @ Thunderbit. Passionate about cross section of AI and Automation. He's a big advocate of automation and loves making it more accessible to everyone. Beyond tech, he channels his creativity through a passion for photography, capturing stories one picture at a time.
Topics
使用 Javascript 進行網頁爬蟲Java Script網頁爬蟲
目錄

立即體驗 Thunderbit

兩步驟快速擷取名單與各類資料,AI 智能驅動。

取得 Thunderbit 免費體驗
用 AI 擷取資料
輕鬆將資料匯入 Google Sheets、Airtable 或 Notion
Chrome Store Rating
PRODUCT HUNT#1 Product of the Week