用 Python 抓取 Google 新聞:完整步驟教學

最後更新於 August 13, 2025

我永遠記得第一次為產品發表會追蹤新聞的那種緊張感。當時我桌上三個螢幕、十幾個 Google 新聞分頁全開,腦袋裡一直怕漏掉什麼大事——像是競爭對手突然發新聞稿,或一場突如其來的公關危機。後來才發現,這種焦慮根本不是我一個人的問題。現在網路上每天會冒出超過,這數量多到你一輩子都看不完,更別說在下一杯咖啡喝完前讀完。

如果你在做業務、行銷、營運或公關,這種「新聞焦慮」你一定懂。手動追新聞就像用水管喝水,根本招架不住。所以,學會用 Python 抓取 Google 新聞,等於直接開啟你的超能力:自動收集新聞、彙整分析資料,無論是品牌監控、競爭對手追蹤,還是搶先掌握產業趨勢,關鍵資訊都不會再漏掉。這篇教學會帶你從新手入門,一步步打造出穩定、可重複的 google 新聞爬蟲。內容有程式碼、實戰經驗、最佳實踐,還有一些有趣的小故事。

為什麼商業用戶需要 google 新聞爬蟲?

說真的,商業決策的速度就是新聞標題的速度。不管你是公關、業務還是策略部門,都必須即時掌握外界對你的討論。全球媒體監控工具市場規模已經高達,預計到 2030 年還會翻倍。原因很簡單:沒有人能承受錯過一則可能影響品牌聲譽、銷售或合規的新聞。

media-monitoring-market.png

自動化抓取 Google 新聞,讓你在辦公室情報戰場上永遠快人一步,以下幾種情境最常見:

應用場景自動化新聞數據的好處
品牌聲譽監控及早發現負面新聞或危機,快速應對(參考 Dove 如何靠新聞監控化解公關危機)。
競爭情報追蹤競爭對手新品發表、人事異動或併購動態,調整自身策略(更多細節)。
業務開發監控潛在客戶的融資、擴張或重大新聞事件(案例)。
趨勢與市場分析匯總產業新聞,洞察新興趨勢與市場情緒(為什麼重要)。
風險管理設定訴訟、法規或政策變動的警示,降低營運風險(範例)。

手動追新聞?又慢又容易出錯,還常常錯失良機()。自動化爬蟲則能持續提供結構化新聞資訊,讓你不再 FOMO,只剩下可行動的洞察。

新手入門:用 Python 實作網頁爬蟲(基礎範例)

在正式進入 google 新聞爬蟲之前,先用一個超適合練習的網站 來熱身。這個網站專門給爬蟲練習用,不用怕被封鎖或違規。

我們的流程如下:

  1. 發送請求到首頁。
  2. 用 BeautifulSoup 解析 HTML。
  3. 擷取書名與價格。
  4. 存成 pandas DataFrame 並匯出 CSV。
  5. 處理分頁與錯誤。

步驟 1:發送請求並解析 HTML

先用 Python 的 requests 套件抓首頁:

1import requests
2url = "http://books.toscrape.com/index.html"
3response = requests.get(url)
4print(response.status_code)  # 成功會顯示 200

狀態碼 200 代表請求成功()。

接著解析 HTML:

1from bs4 import BeautifulSoup
2soup = BeautifulSoup(response.text, 'html.parser')

這樣就有一個 soup 物件,可以用 Python 方式操作網頁結構()。

步驟 2:擷取資料並存成 CSV

抓出所有書籍項目:

1books = soup.find_all("li", {"class": "col-xs-6 col-sm-4 col-md-3 col-lg-3"})
2print(f"本頁共找到 {len(books)} 本書")

擷取書名與價格:

1book_list = []
2for item in books:
3    title = item.h3.a["title"]
4    price = item.find("p", class_="price_color").get_text()
5    book_list.append({"Title": title, "Price": price})

用 pandas 存成 CSV:

1import pandas as pd
2df = pd.DataFrame(book_list)
3df.to_csv("books.csv", index=False)

或用內建 csv 模組:

1import csv
2keys = book_list[0].keys()
3with open("books.csv", "w", newline="", encoding="utf-8") as f:
4    writer = csv.DictWriter(f, fieldnames=keys)
5    writer.writeheader()
6    writer.writerows(book_list)

打開 books.csv,你就能在 Excel 裡看到所有書籍資料。

步驟 3:處理分頁與錯誤

如果想抓所有分頁的書籍,可以這樣寫:

1all_books = []
2for page in range(1, 51):  # 共 50 頁
3    url = f"http://books.toscrape.com/catalogue/page-{page}.html"
4    try:
5        res = requests.get(url, timeout=10)
6        if res.status_code != 200:
7            break
8        soup = BeautifulSoup(res.text, 'html.parser')
9        books = soup.find_all("li", {"class": "col-xs-6 col-sm-4 col-md-3 col-lg-3"})
10        for item in books:
11            title = item.h3.a["title"]
12            price = item.find("p", class_="price_color").get_text()
13            all_books.append({"Title": title, "Price": price})
14    except requests.exceptions.RequestException as e:
15        print(f"Request failed: {e}")
16        continue

這個迴圈會自動處理分頁、遇到不存在的頁面就停止,還能捕捉網路錯誤。(小提醒:每次請求間加上 time.sleep(1),避免對伺服器造成壓力。)

恭喜你!你已經學會網頁爬蟲的基本功:發送請求、解析、擷取、分頁與錯誤處理。這些技巧同樣適用於 google 新聞爬蟲。

用 Python 抓取 Google 新聞:逐步實作

準備好進階挑戰了嗎?我們要打造一個 google 新聞爬蟲,能自動抓取標題、連結、來源、時間,讓全球新聞變成可分析的結構化資料。

Python 環境準備

請先安裝 Python 3 與以下套件:

1pip install requests beautifulsoup4 pandas

另外,建議加上 User-Agent 字串,模擬真實瀏覽器,否則 Google 可能會拒絕你的請求()。

建立 google 新聞爬蟲

分成幾個步驟:

1. 設定搜尋網址與參數

Google 新聞搜尋網址格式如下:

1https://news.google.com/search?q=YOUR_QUERY&hl=zh-TW&gl=TW&ceid=TW:zh-Hant
  • q:搜尋關鍵字
  • hl:語言(如 zh-TW
  • gl:國家(如 TW
  • ceid:國家:語言(如 TW:zh-Hant

Python 實作:

1base_url = "https://news.google.com/search"
2params = {
3    'q': '科技',
4    'hl': 'zh-TW',
5    'gl': 'TW',
6    'ceid': 'TW:zh-Hant'
7}
8headers = {
9    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)...'
10}

2. 抓取搜尋結果頁面

1response = requests.get(base_url, params=params, headers=headers)
2html = response.text
3print(response.status_code)

3. 解析並擷取新聞資料

解析 HTML 並擷取新聞:

1soup = BeautifulSoup(html, 'html.parser')
2articles = soup.find_all('article')
3news_data = []
4for art in articles:
5    headline_tag = art.find('h3')
6    title = headline_tag.get_text() if headline_tag else None
7    link_tag = art.find('a')
8    link = link_tag['href'] if link_tag else ''
9    if link.startswith('./'):
10        link = 'https://news.google.com' + link[1:]
11    source_tag = art.find(attrs={"class": "wEwyrc"})
12    source = source_tag.get_text() if source_tag else None
13    time_tag = art.find('time')
14    time_text = time_tag.get_text() if time_tag else None
15    snippet_tag = art.find('span', attrs={"class": "xBbh9"})
16    snippet = snippet_tag.get_text() if snippet_tag else None
17    news_data.append({
18        "title": title,
19        "source": source,
20        "time": time_text,
21        "link": link,
22        "snippet": snippet
23    })

存成 CSV:

1df = pd.DataFrame(news_data)
2df.to_csv("google_news_results.csv", index=False)

處理缺漏資料

Google 新聞的 HTML 結構不總是固定,擷取前記得檢查標籤是否存在,缺漏就設為 None 或空字串。

多頁抓取與速率限制

Google 新聞是無限捲動,requests 通常只能抓到第一批結果。想抓更多可以:

  • 用 RSS feed(可取得更多結果,
  • 用 Selenium、Playwright 等無頭瀏覽器模擬捲動(進階)
  • 或定時(如每小時)自動抓取新文章

注意: 抓太快會被 Google 封鎖,10 次快速請求就可能出現 429 錯誤()。避免被封建議:

  • 每次請求間加上 time.sleep(random.uniform(2,6))
  • 大量抓取時輪換 User-Agent 與 IP
  • 偵測 CAPTCHA 或封鎖頁面時自動暫停

讓 google 新聞爬蟲可重複、可分析

重點來了:高品質爬蟲不只是「抓到資料」而已,更要讓資料可重複、可分析。 想讓 BI 儀表板、公關監控或競爭追蹤長期運作,必須控管語言、地區、時間與重複資料。

語言、地區、時間切片

Google 新聞內容高度個人化。為了取得一致結果:

  • hlglceid 參數指定語言與地區(
  • 例如 hl=zh-TW&gl=TW&ceid=TW:zh-Hant 取得台灣新聞,hl=en-IN&gl=IN&ceid=IN:en 取得印度英文新聞

時間切片:

  • Google 新聞沒有直接的「過去 24 小時」參數,但結果通常依新舊排序
  • 可在抓取後過濾:time 包含「小時前」、「分鐘前」或「今天」就保留
  • 進階可用 RSS 或搜尋運算子(但支援有限)

過濾與去重

重複新聞會影響分析品質。建議:

  • 來源/主題白名單: 只保留特定來源或主題。搜尋時可用 source: 運算子(如 q=Tesla source:Reuters)。
  • 網址去重: 移除追蹤參數(如 utm_*),可用:
1import urllib.parse
2clean_link = urllib.parse.urljoin(link, urllib.parse.urlparse(link).path)

  • 標題去重: 標題相似的只保留一則,可用小寫、去標點比對。
  • 追蹤已抓過的文章: 每天抓取時,存下網址 hash,避免重複計算。

這樣你的資料就乾淨又適合後續分析,不會重複計算標題或影響情緒分析()。

方法比較:python 抓取 google 新聞 vs. Google 新聞 API

該自己寫 google 新聞爬蟲,還是用第三方 Google 新聞 API?比較如下:

比較項目自建 Python 爬蟲第三方 Google 新聞 API 服務
實作難度需寫程式、除錯、適應網站變動直接呼叫 API,無需解析 HTML
彈性欄位、子頁面都能自訂擷取受限於 API 提供的欄位與功能
資料掌控完全掌握原始資料資料經過處理,需信任對方解析
規模與速度受限於自身 IP/資源,易被封鎖供應商處理代理與封鎖,適合大規模
穩定性Google 改版或封鎖就會壞API 會自動適應變動,穩定性高
維護成本需持續更新選擇器、反爬蟲幾乎不用維護,供應商處理
成本免費(但需花時間,可能有代理費)付費,依請求數或月費計價(價格範例
封鎖風險高,Google 可能封 IP低,API 會自動處理封鎖與重試
資料即時性自己決定抓取頻率,但太頻繁易被封即時,配合高額度方案可大量抓取
法律/條款風險需自行遵守 Google 條款,風險自負仍需注意,但 API 通常標榜合理使用(非法律建議)

小型專案或學習建議自建,想省時省力、穩定大規模運作則建議用 API。(如果想要兩全其美——免寫程式、免維護——可以參考下方 Thunderbit。)

google 新聞爬蟲常見問題與排解

抓取 Google 新聞不總是一帆風順,常見問題與解法如下:

  • CAPTCHA 或「異常流量」頁面: 降低請求速度、輪換 User-Agent、必要時用代理。遇到驗證碼就暫停。(
  • HTTP 429/503 錯誤: 被限流或封鎖,請實作退避、檢查 robots.txt,避免多線程同時抓取。
  • HTML 結構變動: Google 常改版,需重新檢查 HTML 並更新選擇器,擷取時用 try/except 避免程式崩潰。
  • 缺漏欄位: 並非每則新聞都有摘要或來源,程式要能彈性處理。
  • 重複資料: 依前述方法去重。
  • 編碼問題: 存檔時統一用 UTF-8。
  • JavaScript 載入內容: 大多數 Google 新聞為伺服器端渲染,若遇到 JS 載入內容可用 Selenium、Playwright(進階)。

更多排解技巧可參考

google 新聞爬蟲的道德與最佳實踐

來聊聊爬蟲倫理與最佳實踐——能力越大,責任越大:

  • 遵守 robots.txt: Google 新聞的 robots.txt 禁止抓取部分路徑(),即使技術上能抓,也建議遵守規範。
  • 避免過度請求: 加入延遲,選擇離峰時段,不要對網站造成負擔。
  • 合法使用資料: 只用於分析標題、摘要、連結,不要全文轉載()。
  • 標註來源: 分享分析時請註明 Google 新聞與原始媒體。
  • 定期維護爬蟲: 網站會變動,程式也要跟著調整。
  • 隱私與法規遵循: 資料妥善保存,遵守隱私法規。
  • 合理使用與速率限制: 適度抓取,若被要求停止請配合()。

總之,做個有禮貌的網路公民,未來的你(還有 IT 部門)都會感謝你。

重點整理與下一步

重點回顧:

  • 你學會了 Python 網頁爬蟲的基礎,從靜態網站到 Google 新聞,掌握 requests 與 BeautifulSoup。
  • 你打造了可重複的 google 新聞爬蟲流程: 控制語言、地區、時間,去重,讓資料隨時可分析。
  • 你比較了自建爬蟲與 API 解決方案: 理解控制權、穩定性與成本的取捨。
  • **你學會了排解問題與道德規範,**確保負責任地抓取資料。

接下來呢?把這些技巧應用到你的業務場景——不論是品牌監控、競爭追蹤,還是打造自家新聞儀表板。想再進階?可以嘗試抓取其他新聞網站、自動化資料流程,甚至對標題做情緒分析。

如果你不想再維護 Python 程式(或想省下寶貴時間),可以試試 。Thunderbit 是一款 AI 驅動的網頁爬蟲 Chrome 擴充功能,讓你只需點幾下就能抓取 Google 新聞和其他網站,完全免寫程式。內建「AI 智能欄位建議」、排程爬蟲、子頁面自動導航、一鍵匯出 Excel/Google Sheets,是團隊自動化新聞收集的最佳利器。(

想學更多爬蟲技巧,歡迎瀏覽 ,或參考我們的

祝你抓新聞順利,讓你的資訊永遠比競爭對手快一步、結構化又好分析!

作者:Shuai Guan,Thunderbit 共同創辦人兼執行長。多年來深耕 SaaS、自動化與 AI,最愛把混亂的資訊變成有用的數據。如果你有問題或想交流爬蟲經驗,歡迎聯絡我。

常見問答

1. 為什麼企業要用 Python 抓取 Google 新聞?

自動化抓取 Google 新聞能幫助企業即時收集與品牌、競爭對手或產業相關的新聞。這樣能快速監控公關危機、追蹤競爭動態、獲取業務線索、分析市場趨勢與管理風險。手動追蹤不僅慢,還容易漏掉重要資訊;自動化爬蟲則能持續提供結構化、即時的新聞資料。

2. 用 Python 抓取 Google 新聞的基本步驟是什麼?

流程包含:

  • 安裝 requestsBeautifulSouppandas 等 Python 套件
  • 設定 Google 新聞搜尋網址與參數(如關鍵字、語言、地區)
  • 發送請求並加上 User-Agent
  • 解析 HTML,擷取標題、連結、來源、時間、摘要等欄位
  • 將資料存成 CSV 方便分析
  • 處理缺漏資料與去重,確保資料乾淨可用

3. 抓取 Google 新聞常見挑戰有哪些?如何解決?

常見挑戰:

  • CAPTCHA 或「異常流量」警告:降低請求速度、輪換 User-Agent、必要時用代理
  • 速率限制(HTTP 429/503):加延遲,避免多線程同時抓取
  • HTML 結構變動:定期更新選擇器,擷取時用 try/except
  • 欄位缺漏或不一致:擷取前先檢查標籤是否存在
  • 重複資料:依網址或標題去重
  • 編碼問題:存檔時統一用 UTF-8
  • JavaScript 載入內容:進階可用 Selenium、Playwright

4. 如何讓 google 新聞爬蟲流程可重複、可分析?

建議:

  • hlglceid 參數控管語言與地區
  • 時間過濾可在抓取後處理,或用 RSS
  • 依網址、標題去重
  • 追蹤已抓過的文章,避免重複
  • 資料妥善保存,並記錄流程方便日後維護

5. 該自建 google 新聞爬蟲還是用第三方 API?

自建爬蟲彈性高、免費(僅需時間與代理費),但需持續維護,遇到 Google 改版易壞,且被封鎖風險較高。第三方 API 穩定、易於大規模使用,會自動處理反爬蟲,但需付費且彈性較低。小型專案或學習建議自建,大型或商用建議用 API。

用 AI 網頁爬蟲抓取 Google 新聞
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
Google 新聞爬蟲網頁爬蟲 Google 新聞Python 抓取 Google 新聞
目錄

立即體驗 Thunderbit

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

下載 Thunderbit 免費體驗
用 AI 擷取資料
一鍵匯出到 Google Sheets、Airtable 或 Notion
Chrome Store Rating
PRODUCT HUNT#1 Product of the Week