iT邦幫忙

2026 iThome 鐵人賽

DAY 21
0
佛心分享-IT 人自學之術

當 Python 初學者遇到 AI:30 天人機協作學習手記系列 第 21 篇

進階第七關:沒有 API 也能抓!網路爬蟲入門與 BeautifulSoup 網頁解析

  • 分享至 

  • xImage
  •  

今日對話:什麼是爬蟲?怎麼從網頁裡找資料?

我的 Prompt(提示詞):

「如果一個網站沒有提供 API,但我想要把它網頁上的標題或內容抓下來,該怎麼做?請用白話文教我什麼是『網路爬蟲』?我們該如何看懂網頁結構?並介紹 BeautifulSoup 套件的作用與基本寫法。」

AI 導師的建議與拆解

AI 導師笑著說,爬蟲其實沒有聽起來那麼高深,它的邏輯非常直白:

  1. 網路爬蟲的運作原理
    這就像是你點開一個網頁,然後按下右鍵選擇「檢視網頁原始碼」。

爬蟲就是讓 Python 模仿你的動作:去那個網址 ➔ 把背後那一整坨密密麻麻的 HTML 原始碼全部下載下來。

  1. 網頁的骨架:HTML 標籤
    HTML 就像是網頁的「收納箱」。例如 我是標題 或 100元。我們想要的資料,通常都被包在這些帶有特定標籤(Tag)與類別名稱(Class)的箱子裡。

  2. 神器 BeautifulSoup 登場!
    如果requests是幫我們把整車 HTML 收納箱搬回家的搬家工人,那 BeautifulSoup 就是一把精準的「瑞士刀」與「透視鏡」。
    你只要跟它說:「幫我找出所有標籤是 span,而且 class 是 price 的箱子,並把裡面的東西拿出來」,它就會瞬間幫你過濾出乾淨的文字!

實作筆記與驗證

步驟一:安裝 BeautifulSoup 套件
這也是第三方套件,所以要在 VS Code 的終端機輸入:

bash
pip install beautifulsoup4

步驟二:建立 day21.py檔案,寫第一隻爬蟲!
我們這次使用專門設計給新手練習爬蟲的國外名言網站 (quotes.toscrape.com) 來進行安全的測試:

python
import requests
from bs4 import BeautifulSoup

#1. 目標網址 (名言佳句練習站)
url = "https://quotes.toscrape.com/"

print("🕷️ 派出 requests 蜘蛛前往抓取網頁...")
response = requests.get(url)

#確保網頁有正常回應 (200)
if response.status_code == 200:
print("✅ 網頁原始碼下載成功!交給 BeautifulSoup 解析...")

#2. 把拿回來的 HTML 原始碼交給 BeautifulSoup 解析
#"html.parser" 是告訴它這是一個 HTML 檔案
soup = BeautifulSoup(response.text, "html.parser")

#3. 開始尋寶!
#觀察網頁原始碼後發現,名言的文字都被包在 標籤裡
#使用 find_all() 一口氣找出所有符合條件的標籤
quotes = soup.find_all("span", class_="text")

print("-" * 40)
print("💡 抓取到的前五句名言:\n")

#4. 用 for 迴圈把它們印出來
#[:5] 代表我們只取串列的前 5 筆資料
for i, quote in enumerate(quotes[:5], 1):
# 使用 .text 屬性,把 HTML 標籤脫掉,只留下裡面的純文字!
print(f"【名言 {i}】 {quote.text}")

print("-" * 40)

else:
print(f"❌ 連線失敗,狀態碼:{response.status_code}")

今日小結

今天我們結合了 requests 和 BeautifulSoup,成功破解了沒有 API 的網站,直接從 HTML 原始碼中萃取出有價值的數據!


上一篇
[Day 20] 進階第六關:與世界連線!認識 API、JSON 格式與 Requests 外掛
下一篇
[Day 22] 進階最終戰:將資料化零為整!Pandas 數據處理基礎與匯出 CSV
系列文
當 Python 初學者遇到 AI:30 天人機協作學習手記 共 25 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言