這次要做的爬蟲練習:
爬蟲各大拍賣網站的商品與價格
最後匯集起來做資料比較
跟以往不同的是
購物網站的商品內容多是用JS動態生成
直接抓HTML原始碼無法獲得想要的資料
要從CHROME開發人員模式分析網頁NETWORK
從裡面網頁的回應請求中過濾出需要的資料位置
並找出與主網址的共通點才達成自動化爬蟲的目的
-------------------------------------------------------------------------------
關於這次的爬蟲練習:
商品統一使用:"GIORGIO ARMANI 亞曼尼奢華訂製柔霧唇露"
爬出第一項商品資料的品名、價格
並與查詢的內容作模糊比對,高於70%的資料會就採用
1.Pchome24h購物
首先的對象是Pchome24h購物
查詢目標商品之後
直接打開html原始碼,並沒有找到任何商品內容
F12打開發開人員模式
從network開始查找需要的資料究竟在哪個位置
doc沒找到後再XHR裡面查找,最後在一個叫做result?q=開頭的檔案中找到需要的資料
查看他的Header,看看能否與主要網址有什麼關聯
先查找了html原始碼發現裡面並沒有提到這個網址
而後開始直接分析這個網址,發現由兩個地方組成
第一部分:
http://ecshweb.pchome.com.tw/search/v3.3/all/?q=
第二部分則是商品名稱:
GIORGIO ARMANI 亞曼尼奢華訂製柔霧唇露
因此我們可以確定第一部分+商品名稱,即是存放商品資料的位置
接下來開始分析該商品資料的內容
這裡為json格式
可以看到商品資訊在['prods']之中,每個數字都代表一件商品
['name']為商品名稱,['price']為商品價格
['Id']為商品網址後面的編碼,加上前段"http://24h.pchome.com.tw/prod/"即是完整網址
在此我們寫一程式將這資訊提取出來
最後成功取出第一項商品的名稱、價格與網址
由於爬出的商品資料不一定會完全符合我們真正要搜尋的商品
(若賣場無該商品就會顯示相似的商品給使用者)
所以接下來使用模糊比對的方法
或商品名稱超過7成相似就採用該商品資料,若低於7成就不採用
這裡模糊比對成功就會顯示ok,之後加入整個系統會再將此模糊比對完善
最後簡單說明一下此模糊比對的方法
a為搜尋的商品名稱:"GIORGIO ARMANI 亞曼尼奢華訂製柔霧唇露"
aa為搜尋的商品名稱中的每個字元
對照到結果的商品名稱"items[0]"
這裡只有做有跟無的檢測
字元(aa)如果有在items[0]裡面就得出yes
沒有的話就是no
最後yes/(yes+no)
取得匹配率
這個模糊比對的只是初步比對
字元的位置、出現的次數都不影響該匹配的結果
但對於目前的需求,已經足夠使用了