在數據行銷中,有效、及時地掌握第一手數據往往是基本中的基本。在電子商務中更是這樣,了解競爭對手的動態可以讓你更好地對自身產品、定價和表現形式進行優化。本篇我們將直奔主題提供一種簡單的抓取天貓店數據的方法。
準備工作
我們將用到的是谷歌Chrome瀏覽器的桌面版,還有Chrome的瀏覽器插件Web Scraper。該插件可以在webscraper.io下載到,完全免費。
我們假設在Windows平台上,按F12 。 Chrome開發者工具會彈出。我們在菜單中選擇最右邊的Web Scraper先放在一邊。至此準備工作已完成。
天貓店鋪鏈接
我們打開天貓店鋪總能看到全部商品分類的選項。我們選中後會帶我們去和下面URL相似的地址。
https://sony.tmall.com/category.htm? spm=a1z10.5-bs.w17695525-15102841353.2.1be86b1ednN0aS& search=y
上面URL中標紅的參數spm並沒有用,有用的是search還有未在上面出現的pageNo 。前者永遠為y,後者為頁數。那麼索尼官方旗艦店的第二頁商品列表的URL就是
https://sony.tmall.com/category.htm?search= y &pageNo= 2
而索尼官方旗艦店產品只有5頁。所以我們先把這個URL規律和總商品頁數記下來。
新建一個爬蟲項目
我們回到Web Scraper。點擊Create new sitemap 。依次填入Sitemap name: sony-tmall和Start URL: https://sony.tmall.com/category.htm?search=y&pageNo=2 。點擊Create Sitemap按鈕。
新建後我們會在有一個Add new selector藍色按鈕的界面。此處我們的位置為_root 。
這裡的selector的意思是CSS Selector即CSS選擇器。我們在之前文章中詳細介紹過。
建立選擇器圈定商品
CSS選擇器的作用是在HTML中定位。我們現在瀏覽器的地址欄中打開我們要爬的頁面。然後點擊剛才提到的藍色按鈕Add new selector 。
我們首先要選的是頁面元素,每個元素就是一個商品的長方形表示區域。在Id中填入item ,在Type中選擇Element後,我們點擊Selector中的Select按鈕。
當你的鼠標此時放到商品區域邊緣時,該區域會高亮,點擊後再按下面的藍色按鈕Done selecting!你會發現Data preview旁邊已經自動輸入了選擇器。
如果此時你跟著行銷長的節奏,你的選擇器看上去會是這個樣子:div.item5line1:nth-of-type(1) dl.item:nth-of-type(2)
啟用Element preview按鈕時,該塊區域會再次高亮,先關閉它。接下去我們點上Multiple這個選框,沒什麼變化,這是因為我們的選擇器只選擇了一件商品。因此我們要手動進行修改,去掉一些過濾條件把它簡化為div dl.item 。
當我們再次啟用Element preview時,就能看到所有商品區域都高亮了。
點擊藍色按鈕Save selector保存。我們的第一個選擇器就完成了。
抓取各商品的屬性
上面我們只是對一個個商品單元做了定位,它們相當於你的數據表中的每一行。接下來每一列就是我們要在商品單元中真正抓取的數據了。我們大概需要抓取商品名稱( title )、價格( price )、銷量( sale )、評價( comment )這些數據。於是我們點入剛剛我們新建的選擇器開始新建這些列。此時我們的位置在_root / item 。
上述4個數據元素的選擇器建立方法和我們上面的方法基本一致,為了節省篇幅我們只說一些區別。
- 類型(Type)不再選擇Element而是Text 。
- 由於每個單元中只有一個唯一數據源,因此不勾選Multiple。
- Parent Selectors記得選擇item而不是_root 。
- 評論的選擇器中添加Regex: [0-9]+這是為了去掉“評價: ”而只保留純數字。
最後我們要建一個產品ID欄—— product_id 。選擇器為_parent_
保存完最後這個屬性後,我們可以看到界面中有這些選擇器,上面略過的所有選擇器都在下圖中列出,可直接使用:
點擊_root回到上一層,然後點擊藍色按鈕Data preview ,我們就可以預覽這個頁面上我們要抓取的內容。
是不是感覺漸入佳境了?你會發現有幾個商品的評論數為null,這是因為那些是頁面底部的促銷樣式,我們可以在導出後在Excel中過濾掉。現在先不用處理。
多頁面抓取和導出
你是否注意到我們只抓了第二頁?別急,我們現在就來補完。你應該注意到頁碼2/5了。沒錯一共有5頁。我們可以點擊菜單中的Edit metadata來更改Sitemap的設定。
我們只要將Start URL改為https://sony.tmall.com/category.htm?search=y&pageNo= [1-5]就可以連續抓5個頁面了,請放心食用。改完保存後就可以點選上圖菜單中的Scrape,然後開始一路抓取。這裡請注意,由於防爬蟲機制如果你未登錄天貓,那麼過不了多久馬爸爸會請你輸入驗證碼。因此建議你保持登錄狀態。 (至於登錄後是不是會封號,請後果自負……)
爬完了點擊refresh就可以看到抓取完的數據了。是不是滿意呢?再次點擊上圖菜單中的Export data as CSV即可導出數據到Excel進行後續的分析處理,這裡不再贅述。
最後,你可以點擊Export Sitemap導出你新建的項目,便於備份分享。
總結+完整代碼
我們的教程就到此為止了,天貓商舖、淘寶店、各種搜索結果都可以用這種方式來爬,只是選擇器不盡相同,讀者可以自己練習摸索。但是登錄後的搜索結果千人千面是否有參考價值也有待商榷。
最後我們分享一下本次使用的實例。你可以通過Import Sitemap直接使用。但是HubSpot One還是建議你對不同的天貓店進行更改,因為店的域名是不同的。
{"_id":"sony-tmall","startUrl":["https://sony.tmall.com/category.htm?search=y&pageNo=[1-5]"],"selectors":[{"id":"item","type":"SelectorElement","selector":"div dl.item","parentSelectors":["_root"],"multiple":true,"delay":0},{"id":"title","type":"SelectorText","selector":"a.item-name","parentSelectors":["item"],"multiple":false,"regex":"","delay":0},{"id":"price","type":"SelectorText","selector":"span.c-price","parentSelectors":["item"],"multiple":false,"regex":"","delay":0},{"id":"sale","type":"SelectorText","selector":"span.sale-num","parentSelectors":["item"],"multiple":false,"regex":"","delay":0},{"id":"comment","type":"SelectorText","selector":"h4 span","parentSelectors":["item"],"multiple":false,"regex":"[0-9]+","delay":0},{"id":"product_id","type":"SelectorElementAttribute","selector":"_parent_","parentSelectors":["item"],"multiple":false,"extractAttribute":"data-id","delay":0}]}