iT邦幫忙

2025 iThome 鐵人賽

DAY 10
0
Software Development

軟體開發養成計畫:以小程式實作深化開發能力系列 第 10

[Day10]為什麼大家都在學網頁爬蟲?你該知道的基礎觀念

  • 分享至 

  • xImage
  •  

常常因為太忙碌沒時間看新聞?想要有人每天自動抓最新新聞標題給你嗎?Python 網頁爬蟲可以幫你做到~那接下來,就讓我們先來了解一下網路爬蟲的小知識吧!

1.甚麼是網路爬蟲?

網頁爬蟲就是一種程式,可以自動去網頁上「抓資料」回來。
平常我們打開瀏覽器 → 搜尋 → 點連結 → 複製資料的流程,可以透過爬蟲,直接自動化執行這些步驟:它會模擬使用者瀏覽網頁,然後把需要的資料,像文字、圖片、連結、價格、評論等等提取下來。
使用爬蟲還有些更細部的優點,像是:

  • 不用手動複製貼上,節省大量時間。
  • 很多數據科學、AI 訓練模型,都需要龐大資料集,爬蟲可以幫忙收集這些數據。
  • 學生或研究者常需要公開資料,若學會爬蟲,就能快速取得研究所需的資訊。

有了這麼方便的功能,網頁爬蟲的出現真的成了學習網頁、資料科學,甚至是後端工程的人們的一大福音呢!

2.網頁爬蟲基礎知識

(1)HTTP請求與回應

爬蟲本質上就是在模擬瀏覽器跟伺服器溝通,而這種溝通是透過 HTTP (HyperText Transfer Protocol) 的Request和Response來完成的。

  • Request請求:你打開網站時,瀏覽器會發出一個請求給伺服器。
    常見的Request方式:
    • GET:用來「取得資料」,例如瀏覽文章頁面、抓新聞列表。
GET /index.html HTTP/1.1
Host: example.com
    • POST:用來「送出資料」,例如登入帳號、送出表單。
   POST /login HTTP/1.1
Host: example.com
Content-Type: application/x-www-form-urlencoded

username=abc&password=123

大部分情況我們用 GET 來抓取頁面資料,遇到需要輸入帳號或查詢的情況,就會用到 POST。

  • Response回應:伺服器收到請求後,會回傳資料(通常是 HTML)。

(2)HTML結構

伺服器回傳的通常是 HTML超文字標記語言,爬蟲需要讀懂 HTML 結構,才能找到我們想要的資料。

  • 常見標籤:
    div:區塊,用來分隔版面,像容器。
    h1 ~ h6:標題,h1 通常是網頁的主標題。
    p:段落內文。
    a:超連結,裡面常有網址和文字。
    img:圖片。
  • 範例:
<html>
  <body>
    <h1>最新新聞</h1>
    <div class="news">
      <p>今天的焦點新聞是...</p>
      <a href="https://example.com/news1">閱讀更多</a>
    </div>
  </body>
</html>

如果想抓「新聞標題」,就要找 h1 的內容;想抓「新聞連結」,就要找 a 的 href。

(3)User-Agent 與 Headers

當我們用程式去爬網站時,伺服器有時候會判斷:「這個人不是正常的瀏覽器,是機器人!」,也就是說如果伺服器懷疑你是爬蟲,可能會擋掉,因此我們需要個假裝自己是瀏覽器,避免被擋掉的辦法。
像是:

  • Headers:HTTP 請求裡附帶的額外資訊,例如語言、瀏覽器類型。
  • User-Agent:最重要的 Header,用來表示「你是什麼瀏覽器」,伺服器會以為你是 Chrome/Edge/Safari,而不是程式。
    另外還有一些常使用的Hraders:Accept-Language, Referer, Cookie,這些也能有效有效降低被網站擋掉的機率。

3.Python相關套件

接下來是網頁爬蟲裡不可或缺的Python套件基本工具組,讓我們一起來看看吧!

(1)requests

requests功能是用來發送 HTTP 請求,為最常見的爬蟲工具。
像是:

  • 支援 GET、POST 等請求。
  • 可以自訂 headers。
  • 取得的response可以是文字(HTML)、JSON、或檔案。

(2)BeautifulSoup

BeautifulSoup功能是用來解析 HTML並找到特定元素,常跟 requests 搭配使用。
還有支援:

  • 標籤選擇器,找 div, h1 等。
  • 屬性過濾,像 class, id。

這兩項工具的角色功能,一個是幫忙跟網站要資料,另一個是幫忙從 HTML 裡挑出需要的資料。
透過這樣的分工,我更能理解網頁爬蟲的核心流程:先取得資料,再解析資料。requests 負責建立橋樑,把伺服器回傳的內容帶回來,而 BeautifulSoup 則像是一個「資料篩選器」,幫我在龐雜的 HTML 結構中找到想要的重點。

4.心得

學習網頁爬蟲最重要的原因是它能幫助我們自動化取得資料,避免了人工一頁一頁複製貼上的低效率。而我也透過爬蟲,學到我們可以快速收集大量資訊,進而應用在資料分析、研究、學術報告,甚至 AI 訓練模型,這不僅僅提升了效率,也讓我們對網路世界背後的運作有更深入的理解。不過,使用爬蟲時也要保持責任感:不要太頻繁或大量地爬取,避免造成伺服器負擔;同時要尊重網站的使用規範,避免將爬蟲用於商業牟利或侵權行為。只有在合理、合法的情況下使用,爬蟲技術才能真正發揮正面價值。


上一篇
[Day9]懶人救星:Python 幫你自動分類檔案
下一篇
[Day11]實戰設計模式:掌握程式架構的基石——單例模式與 MVC
系列文
軟體開發養成計畫:以小程式實作深化開發能力17
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言