Share This Post

什麼是爬蟲?

  • 「網路爬蟲」是一個透過程式「自動抓取」網站資料的過程
    • 依據所訂規則自動抓取網頁上資訊的程式。
    • 整理出我們所需的格式,像是 Excel 試算表、CSV 檔案或是資料庫等。

原理

  • 發起請求:通過HTTP庫向目標站點發起請求,即傳送一個Request,請求可以包含額外的headers等資訊,等待伺服器響應。
  • 獲取響應內容:如果伺服器能正常響應,會得到一個Response,Response的內容便是所要獲取的頁面內容,型別可能有HTML,Json字串,二進位制資料(如圖片視訊)等型別。
  • 解析內容:得到的內容可能是HTML,可以用正規表示式、網頁解析庫進行解析。可能是Json,可以直接轉為Json物件解析,可能是二進位制資料,可以做儲存或者進一步的處理。
  • 儲存資料:儲存形式多樣,可以存為文字,也可以儲存至資料庫,或者儲存特定格式的檔案。

request、response

  • request

請求方式:主要有GET、POST兩種型別,另外還有HEAD、PUT、DELETE、OPTIONS等。

請求URL:URL全稱統一資源定位符,如一個網頁文件、一張圖片、一個視訊等都可以用URL唯一來確定。

請求頭:包含請求時的頭部資訊,如User-Agent、Host、Cookies等資訊。

請求體:請求時額外攜帶的資料如表單提交時的表單資料。

  • response

響應狀態:有多種響應狀態,如200代表成功、301跳轉、404找不到頁面、502伺服器錯誤。

響應頭:如內容型別、內容長度、伺服器資訊、設定Cookie等等。

響應體:最主要的部分,包含了請求資源的內容,如網頁HTML、圖片二進位制資料等

實作

安裝beautifulsoup、requests套件

  • pip install beautifulsoup4
  • pip install requests

建立.py檔,並載入模組

from bs4 import BeautifulSoup
import requests

向網站發起請求,拿到網頁

response = requests.get(
    "https://www.dcard.tw/f")

解析網頁

soup = BeautifulSoup(response.text, "html.parser")

篩選條件
進入要爬的網站按F12進入開發者模式尋找要蒐集的內容ex:標題等..,以Dcard為例

搜尋網站中h2,並且class=tgn9uw-2 bqeEAL的標籤

result = soup.find_all("h2",{"class":"tgn9uw-2 bqeEAL"})

將篩選結果存進陣列,並列印裡面文字

for title in result:
    print(title.select_one("span").getText())

訂閱研究文章

Get updates and learn from the best

More To Explore

Commitizen

前言: 現今軟體功能複雜與龐大,在開發過程中,不管單人開發還是多人協作,對所編寫的代碼與代碼版本管控都是必須的

NFC x Mifare

實作紀錄 readMifare readNdef 知識補充 手機NFC隱含攻擊弱點 掌握原理避免無線盜刷 MI

Scroll to Top