資料抓取對於任何想要從網站中提取有意義資訊的人來說都是一個遊戲規則改變者。透過 Chrome DevTools 和 HAR 檔案等工具,您可以輕鬆發現隱藏的 API 並擷取有價值的資料流。在這篇文章中,我將分享如何使用這些工具從雜貨配送平台 Blinkit 中抓取產品數據,並向您展示如何做到這一點。
為什麼我為我的雜貨應用程式選擇資料抓取
在建立雜貨配送應用程式時,我面臨著一個重大挑戰——缺乏真實數據。從頭開始創建我自己的資料集將非常耗時,並且不會為專案提供任何真正的優勢。我需要一個更快、更實用的解決方案,這讓我產生了抓取資料的想法。透過從 Blinkit 提取產品詳細信息,我可以獲得準確的真實數據來測試和改進我的應用程序,而不會浪費資源。
網路爬取資料的常用方法
-
手動複製貼上
-
網頁抓取工具
- Scrapy、BeautifulSoup 或 Puppeteer 等工具可以自動執行從網站擷取資料的流程。
- 最適合大規模結構化資料擷取。
-
API 整合
- 一些網站提供公共 API 來直接合法地存取其資料。
- 需要了解 API 端點和驗證流程。
-
瀏覽器開發工具
- 直接在瀏覽器中檢查網頁請求、捕獲 HAR 檔案或分析頁面元素。
- 非常適合識別隱藏的 API 或 JSON 資料。
-
無頭瀏覽器
- 使用 Puppeteer 或 Selenium 等無頭瀏覽器庫來自動導航和抓取。
- 非常適合需要 JavaScript 渲染或互動的網站。
-
解析 HAR 檔案
- HAR 檔案擷取網頁的所有網路活動。可以解析它們以提取 API、JSON 回應或其他資料。
- 對於具有動態內容或隱藏資料的網站很有用。
-
HTML 解析
- 使用 BeautifulSoup (Python) 或 Cheerio (Node.js) 等函式庫解析 HTML 內容來擷取資料。
- 對於簡單的靜態網站有效。
-
從 PDF 或影像擷取資料
- PyPDF2、Tesseract (OCR) 或 Adobe API 等工具可在無法線上取得資料時協助從文件中擷取文字。
-
自動腳本
- 用 Python、Node.js 或類似語言編寫的自訂腳本,用於抓取、解析和儲存資料。
- 提供對抓取過程的完全控制。
-
第三方 API
- 使用 DataMiner、Octoparse 或 Scrapy Cloud 等服務來為您處理抓取任務。
- 節省時間,但根據服務計劃可能會有限制。
我選了HAR檔案解析
什麼是 .har 文件?
HAR(HTTP Archive)文件是一種 JSON 格式的存檔文件,用於記錄網頁的網路活動。它包含有關每個 HTTP 請求和回應的詳細信息,包括標頭、查詢參數、有效負載和計時。 HAR 檔案通常用於調試、效能分析,在本例中也用於資料抓取。
HAR 檔案的結構
HAR 檔案由多個部分組成,主要部分是:
-
日誌
- HAR 檔案的根對象,包含有關記錄的會話和捕獲的條目的元資料。
-
條目
- 物件數組,其中每個條目代表一個單獨的 HTTP 請求及其對應的回應。
主要屬性包括:
-
request:有關請求的詳細信息,例如 URL、標頭、方法和查詢參數。
-
回應:有關回應的訊息,包括狀態代碼、標頭和內容。
-
計時:請求-回應週期(例如 DNS、連線、等待、接收)所花費時間的細分。
-
頁
- 包含有關會話期間載入的網頁的數據,例如頁面標題、載入時間和頁面開啟的時間戳。
-
創作者
- 有關用於產生 HAR 檔案的工具或瀏覽器的元數據,包括其名稱和版本。
為什麼我選擇HAR文件解析
HAR 檔案提供網頁上所有網路活動的全面快照。這使得它們非常適合識別隱藏的 API、捕獲 JSON 有效負載以及提取抓取所需的確切資料。結構化 JSON 格式也簡化了使用 Python 或 JavaScript 函式庫等工具的解析過程。
計畫:使用 HAR 檔案解析抓取資料
為了有效地從 Blinkit 中提取產品數據,我遵循了一個結構化計劃:
-
瀏覽與捕捉網路活動
- 開啟 Blinkit 網站並啟動 Chrome DevTools。
- 瀏覽各種產品頁面以捕獲「網路」標籤中所有必要的 API 呼叫。
-
匯出 HAR 檔案
- 將記錄的網路活動儲存為 HAR 檔案以供離線分析。
-
解析 HAR 檔案
- 使用Python解析HAR檔案並擷取相關資料。
- 創建了三個關鍵函數來簡化流程:
-
功能一:過濾相關回應
- 擷取與端點 /listing?catId=* 相符的所有回應以取得產品相關資料。
-
功能2:清理與擷取資料
- 處理過濾後的回應以提取關鍵字段,如 ID、名稱、類別等。
-
功能三:將圖片儲存到本地
- 辨識出資料中所有商品圖片URL,並將其下載到本機檔案以供參考。
-
執行與結果
- 整個過程,包括一些嘗試和錯誤,大約需要 30-40 分鐘。
- 成功抓取了大約 600 個產品的數據,包括名稱、類別和圖像。
這種方法使我能夠快速有效地收集我的雜貨配送應用程式所需的資料。
結論
資料抓取如果有效率完成,可以節省大量時間和精力,特別是當您需要真實資料來測試或建立應用程式時。透過利用 Chrome DevTools 和 HAR 文件,我能夠快速從 Blinkit 中提取有價值的產品數據,而無需手動建立數據集。雖然這個過程需要一些嘗試和錯誤,但很簡單,並且為開發人員面臨的常見問題提供了實用的解決方案。透過這種方法,我能夠在一小時內收集 600 個產品詳細信息,幫助我推進我的雜貨配送應用程式專案。
然而,資料抓取應該始終以符合道德和負責任的方式進行。在抓取之前,請務必確保遵守網站的服務條款和法律準則。如果做得好,抓取可以成為收集資料和改進專案的強大工具。
以上是使用 DevTools 和 HAR 檔案抓取數據的詳細內容。更多資訊請關注PHP中文網其他相關文章!