昨天學習了 HTML 的基本結構,以及如何使用 BeautifulSoup 的 find() 和 find_all() 找出網頁中的標籤。今天繼續學習 HTML 的 class、id 和 CSS Selector,讓 Python 可以更精準地找到自己需要的資料。
在實際網站中,同一個網頁可能有很多個 div、p 或 h2 標籤,如果只靠標籤名稱搜尋,很容易抓到不需要的內容。因此,今天我使用 Google Colab 建立商品 HTML,練習從不同的商品區塊中擷取名稱、價格、評分和分類。
首先,我先建立一個包含三個商品的 HTML,並使用 BeautifulSoup 解析。
接著,我使用 select(".product") 找出所有商品區塊,並透過 len() 確認成功找到三個商品。
接下來,我練習使用 select_one() 從每個商品區塊中取得名稱、價格、評分和分類,再把資料整理成 Dictionary,最後放進 List 中。
在這個過程中,我也練習將價格轉換成 int,將評分轉換成 float,因為之後如果要進行數值比較或資料分析,就不能一直把這些資料當成字串使用。
完成資料擷取後,我再把之前學過的 if 加進來,篩選出價格低於 2000 元的商品。執行後可以找到無線耳機和滑鼠這兩筆資料。
最後,我把整理好的商品資料輸出成 CSV,讓資料可以保存下來,之後也能繼續使用 Pandas 進行分析。
今天的練習讓我把前幾天學過的內容真正串在一起,從 HTML 解析、CSS Selector 搜尋、資料型態轉換,到 Dictionary、List、條件判斷和 CSV 儲存,都在同一個實作中使用到了。
我也更清楚 class 和 id 的用途,以及為什麼爬蟲需要先找到正確的 HTML 區塊,再從裡面擷取需要的欄位,而不是直接把整個網頁的文字全部抓下來。
目前已經可以完成一個簡單的商品資料擷取流程。接下來會繼續練習把 Requests 和 BeautifulSoup 結合,並逐步加入更完整的資料整理與儲存功能,讓這次的自主學習慢慢發展成一個可以實際運作的爬蟲專案。