close

這次要做的爬蟲練習:

爬蟲各大拍賣網站的商品與價格

最後匯集起來做資料比較

 

跟以往不同的是

購物網站的商品內容多是用JS動態生成

直接抓HTML原始碼無法獲得想要的資料

要從CHROME開發人員模式分析網頁NETWORK

從裡面網頁的回應請求中過濾出需要的資料位置

並找出與主網址的共通點才達成自動化爬蟲的目的

 

 

-------------------------------------------------------------------------------

關於這次的爬蟲練習:

商品統一使用:"GIORGIO ARMANI 亞曼尼奢華訂製柔霧唇露"

爬出第一項商品資料的品名、價格

並與查詢的內容作模糊比對,高於70%的資料會就採用

 

1.Pchome24h購物

首先的對象是Pchome24h購物

查詢目標商品之後

直接打開html原始碼,並沒有找到任何商品內容

F12打開發開人員模式

從network開始查找需要的資料究竟在哪個位置

doc沒找到後再XHR裡面查找,最後在一個叫做result?q=開頭的檔案中找到需要的資料

101.JPG

查看他的Header,看看能否與主要網址有什麼關聯

先查找了html原始碼發現裡面並沒有提到這個網址

而後開始直接分析這個網址,發現由兩個地方組成

第一部分:

http://ecshweb.pchome.com.tw/search/v3.3/all/?q=

第二部分則是商品名稱:

GIORGIO ARMANI 亞曼尼奢華訂製柔霧唇露
 

102.JPG

因此我們可以確定第一部分+商品名稱,即是存放商品資料的位置

接下來開始分析該商品資料的內容

這裡為json格式

可以看到商品資訊在['prods']之中,每個數字都代表一件商品

['name']為商品名稱,['price']為商品價格

['Id']為商品網址後面的編碼,加上前段"http://24h.pchome.com.tw/prod/"即是完整網址

103.JPG

在此我們寫一程式將這資訊提取出來

最後成功取出第一項商品的名稱、價格與網址

108.JPG

 

由於爬出的商品資料不一定會完全符合我們真正要搜尋的商品

(若賣場無該商品就會顯示相似的商品給使用者)

所以接下來使用模糊比對的方法

或商品名稱超過7成相似就採用該商品資料,若低於7成就不採用

這裡模糊比對成功就會顯示ok,之後加入整個系統會再將此模糊比對完善

107.JPG

 

最後簡單說明一下此模糊比對的方法

a為搜尋的商品名稱:"GIORGIO ARMANI 亞曼尼奢華訂製柔霧唇露"

aa為搜尋的商品名稱中的每個字元

對照到結果的商品名稱"items[0]"

這裡只有做有跟無的檢測

字元(aa)如果有在items[0]裡面就得出yes

沒有的話就是no

最後yes/(yes+no)

取得匹配率

 

這個模糊比對的只是初步比對

字元的位置、出現的次數都不影響該匹配的結果

但對於目前的需求,已經足夠使用了

arrow
arrow
    全站熱搜

    ivankao 發表在 痞客邦 留言(0) 人氣()