即時精選

網路爬蟲(Web Scraping)簡介與實作

更新於 2024/12/11閱讀時間約 5 分鐘

關於爬蟲這個主題已經有許多前輩介紹了,但我現在才開始學習。本篇也會實際操作我自己嘗試的網路爬蟲。

1. 爬蟲簡介

什麼是網路爬蟲?

網路爬蟲(Web Scraping) 就像在網路上「自動蒐集資料的機器人」。

想像情境:

你是一個學生,想蒐集補習班課程的資料。如果你手動查詢每個補習班的課程、時間與價格,會非常耗時。這時,爬蟲 就像一個自動助教,幫你到各個補習班網站,自動找出相關資訊並存入資料庫


爬蟲的工作流程

  1. 發送請求(Request):爬蟲像瀏覽器一樣,向網站發出請求,索取資料。
  2. 接收回應(Response):網站回應 HTML 網頁內容。
  3. 資料解析(Parsing):爬蟲從 HTML 中挑出有用的資料
  4. 儲存資料(Storage):將蒐集到的資料存進檔案或資料庫

然而並不是每個網站都可以直接爬蟲,有些網站會禁止爬蟲,因為大量的爬蟲會使小型的 Server 崩潰。不能大規模的爬蟲,又要提供使用者一些資料,就會使用 API 這個功能


2. API 是一個窗口

什麼是 API?

API(Application Programming Interface) 就像網站提供的自動窗口

補習班比喻:查詢窗口

  • API = 點餐機 (API 是點餐窗口) 就像速食店的自動點餐機,它是一個標準化的窗口,讓你方便點餐,而不需要進廚房自己做漢堡
  • 發送請求 (Request):點餐機(API)是窗口,讓顧客(程式)下訂單。
    • 你只需要選擇餐點、按下確定,點餐機會把訂單傳給廚房。
    • 你不需要知道廚房裡的料理過程(API 背後的伺服器操作)。
    • 點餐的請求格式要標準化,否則系統無法處理。
  • 處理請求 (Server): 廚房(伺服器)處理訂單,製作餐點。
    • 廚房負責處理訂單,製作對應的餐點,並將結果交給點餐機。
  • 回應資料 (Response):顧客(用戶端程式)拿到食物(資料)
    • 最後,你從點餐機拿到完成的食物(API 回應的資料),不用進廚房處理任何細節。

3. 合法爬蟲:爬蟲須知

注意事項:

  1. 網站版權與爬蟲守則:
    • 爬蟲前要查看網站的 robots.txt,了解允許抓取的範圍。
  2. 請求間隔:
    • 不要頻繁發送請求, 否則可能被視為惡意攻擊。
  3. 使用合法 API:
    • 如果網站提供 API,建議優先使用 API,速度更快、結構更穩定。



實際操作爬蟲

[Python爬蟲實例] 104人力銀行:抓取更詳細的職缺資訊,搶先別人一步收到通知!

參考其他工程師的 github(這裡有套件),原本想要用 LinkedIn 上的 ABB 亞太職缺資料 Web Scraping 結果花了 2 小時一直找不到 HTML 的 Class,希望再學完網頁後再試著練習。再來嘗試104 人力銀行的查詢也是停在從網頁抓 Header 就找不到,所以我學完網頁會再試試。

  1. 下載套件要在 Terminal 用。
raw-image

結果只能先爬有 API 的嗚嗚

爬取臺灣銀行牌告匯率

(直接點標題有教學文章)

臺灣銀行的連結與API https://rate.bot.com.tw/xrt

可以抓出當下的即時匯率:

raw-image


(取自網友提供的程式碼)

import requests

url = 'https://rate.bot.com.tw/xrt/flcsv/0/day' # 牌告匯率 CSV 網址
rate = requests.get(url) # 爬取網址內容
rate.encoding = 'utf-8' # 調整回應訊息編碼為 utf-8,避免編碼不同造成亂碼
rt = rate.text # 以文字模式讀取內容
rts = rt.split('\n') # 使用「換行」將內容拆分成串列
for i in rts: # 讀取串列的每個項目
try: # 使用 try 避開最後一行的空白行
a = i.split(',') # 每個項目用逗號拆分成子串列
print(a[0] + ': ' + a[12]) # 取出第一個 ( 0 ) 和第十三個項目 ( 12 )
except:
break
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
這個單元我一直很想學習,物件導向 Object Oriented Programming 以前一直以為是一種程式碼,其實是設計程式的觀念,文中我分享了程式碼還有自己想的比喻讓讀者更好理解。除了物件導向,我還介紹其他四種風格的程式碼設計,跟大家一起學習。
深入探討操作系統和中央處理單元 (CPU) 的基本概念,涵蓋 OS 的功能、CPU 的運作,以及程式與執行緒的管理。透過生動的比喻,讀者能夠更輕鬆地理解複雜的硬體運作機制,包括記憶體管理和行程間的通訊。本文為想了解計算機科學的讀者提供了一個清晰的入門指南,讓他們掌握多程式協調與虛擬化技術的基本知識。
終於來到作業系統與 CPU 的最後一個筆記,本篇的學習目標是記憶體分配與虛擬化應用。我會學習邏輯與實體記憶體、分段與頁面管理、虛擬記憶體管理、虛擬記憶體與容器技術。
第五部分:多程式協調與通訊機制,目標:處理多個應用程式的競爭與協作 Interprocess Communication(IPC, 行程間通訊) Race Condition & Critical Section & Dekker's Algorithm Deadlock 與形成的四個條件
目標:理解程式的排程策略,如何讓多個應用程式同時執行 CPU Scheduling Criteria(CPU 調度準則) CPU Scheduling(Preemptive & Non-Preemptive)
本篇文章探討作業系統如何管理程式,介紹了 Process、Thread 及 Process Control Block(PCB)的基本概念。本文以實際例子解釋這些概念,並詳細說明 Context Switch 的運作方式以及程式的五大狀態。
這個單元我一直很想學習,物件導向 Object Oriented Programming 以前一直以為是一種程式碼,其實是設計程式的觀念,文中我分享了程式碼還有自己想的比喻讓讀者更好理解。除了物件導向,我還介紹其他四種風格的程式碼設計,跟大家一起學習。
深入探討操作系統和中央處理單元 (CPU) 的基本概念,涵蓋 OS 的功能、CPU 的運作,以及程式與執行緒的管理。透過生動的比喻,讀者能夠更輕鬆地理解複雜的硬體運作機制,包括記憶體管理和行程間的通訊。本文為想了解計算機科學的讀者提供了一個清晰的入門指南,讓他們掌握多程式協調與虛擬化技術的基本知識。
終於來到作業系統與 CPU 的最後一個筆記,本篇的學習目標是記憶體分配與虛擬化應用。我會學習邏輯與實體記憶體、分段與頁面管理、虛擬記憶體管理、虛擬記憶體與容器技術。
第五部分:多程式協調與通訊機制,目標:處理多個應用程式的競爭與協作 Interprocess Communication(IPC, 行程間通訊) Race Condition & Critical Section & Dekker's Algorithm Deadlock 與形成的四個條件
目標:理解程式的排程策略,如何讓多個應用程式同時執行 CPU Scheduling Criteria(CPU 調度準則) CPU Scheduling(Preemptive & Non-Preemptive)
本篇文章探討作業系統如何管理程式,介紹了 Process、Thread 及 Process Control Block(PCB)的基本概念。本文以實際例子解釋這些概念,並詳細說明 Context Switch 的運作方式以及程式的五大狀態。
你可能也想看
Google News 追蹤
Thumbnail
本文探討了複利效應的重要性,並藉由巴菲特的投資理念,說明如何選擇穩定產生正報酬的資產及長期持有的核心理念。透過定期定額的投資方式,不僅能減少情緒影響,還能持續參與全球股市的發展。此外,文中介紹了使用國泰 Cube App 的便利性及低手續費,幫助投資者簡化投資流程,達成長期穩定增長的財務目標。
在數位化日益深入的今天,駭客網路攻擊成為了各種組織和個人面臨的嚴重挑戰。本文將探討駭客網路攻擊的種類、影響及其防範策略,幫助讀者更好地理解和應對這一重要的安全問題。 什麼是駭客網路攻擊? 駭客網路攻擊是指未經授權的個人或組織通過技術手段,針對計算機系統、網路基礎設施或數據進行的攻擊行為。攻擊者可
Thumbnail
  筆者最近和同行討論,關於駭客找尋目標的方法。其實近十年駭客對於選擇目標的方式其實已經變得很難猜測。 一般人會想到,駭客一定是會選擇一些利潤大的目標,如銀行、虛擬資產平台等等。但是不要忘記,這些財力雄厚的公司當然也知道自己是很容易成為目標,所以他們的防線也不是容易擊破的。
描述我所瞭解的 Web 攻擊技術 何謂網路攻擊? 駭客透過各種系統漏洞或惡意程式,搭配許多技術和工具進行攻擊。目標是要在企業或個人電腦網路中損害、取得控制權或存取重要的文件和系統。 例如: XSS(Cross-Site Scripting,跨站腳本攻擊/跨網站指令碼):指網路罪犯透過存在安全
Thumbnail
本文探討了複利效應的重要性,並藉由巴菲特的投資理念,說明如何選擇穩定產生正報酬的資產及長期持有的核心理念。透過定期定額的投資方式,不僅能減少情緒影響,還能持續參與全球股市的發展。此外,文中介紹了使用國泰 Cube App 的便利性及低手續費,幫助投資者簡化投資流程,達成長期穩定增長的財務目標。
在數位化日益深入的今天,駭客網路攻擊成為了各種組織和個人面臨的嚴重挑戰。本文將探討駭客網路攻擊的種類、影響及其防範策略,幫助讀者更好地理解和應對這一重要的安全問題。 什麼是駭客網路攻擊? 駭客網路攻擊是指未經授權的個人或組織通過技術手段,針對計算機系統、網路基礎設施或數據進行的攻擊行為。攻擊者可
Thumbnail
  筆者最近和同行討論,關於駭客找尋目標的方法。其實近十年駭客對於選擇目標的方式其實已經變得很難猜測。 一般人會想到,駭客一定是會選擇一些利潤大的目標,如銀行、虛擬資產平台等等。但是不要忘記,這些財力雄厚的公司當然也知道自己是很容易成為目標,所以他們的防線也不是容易擊破的。
描述我所瞭解的 Web 攻擊技術 何謂網路攻擊? 駭客透過各種系統漏洞或惡意程式,搭配許多技術和工具進行攻擊。目標是要在企業或個人電腦網路中損害、取得控制權或存取重要的文件和系統。 例如: XSS(Cross-Site Scripting,跨站腳本攻擊/跨網站指令碼):指網路罪犯透過存在安全