話說如今基本上你們都在網上買東西,國家經濟數據已經能夠在網絡購物的數據中略微窺見一二,再加上目前B2B行業的持續火爆,大有把全部交易搬到網上來的趨勢,這個系列教程就來說講若是爬取這些大量的電商交易的數據。html
工具要求:教程中主要使用到了 一、神箭手雲爬蟲框架 這個是爬蟲的基礎,二、Chrome瀏覽器和Chrome的插件XpathHelper 這個用來測試Xpath寫的是否正確
基礎知識:本教程中主要用到了一些基礎的js和xpath語法,若是對這兩種語言不熟悉,能夠提早先學習下,都很簡單程序員
教程正式開始,如今電商網站不少,牛逼哄哄的淘寶京東,新晉貴族惟品會聚美優品 海淘的美麗說higo網易惠惠等等,做爲新手,上來打boss的結果一定是灰屏回家,因此 咱們如今新手村附近找個小弟練練級吧。正則表達式
找小弟也要有找小弟的辦法,咱們就去it橘子上看看有沒有什麼新的電商公司試試,找了一圈,就相中了這個切糕王子,名字霸氣,內容簡單,很是適合咱們這種新手練手,掌握一下基本技能。chrome
那咱們就正式開始,首先,咱們打開切糕王子的商品列表頁瀏覽器
http://www.qiegaowz.com/product/Default.html
只有5款商品,果真是互聯網思惟,爆品邏輯。頓時讓咱們有種用大炮大蚊子的趕腳,寫個爬蟲的時間,不如手動複製了。不過,誰讓咱們是程序員呢?手動複製這麼low的事情說出去都丟不起這我的。網絡
開始前先給你們普及一下爬蟲的基本步驟:框架
1.選定入口url,也叫種子url,就是讓爬蟲從哪一個頁面開始爬
2.區分哪些是內容頁面,也就是咱們須要抽取數據的頁面,哪些是中間頁,就是鏈接其餘頁面,沒有咱們須要的數據的頁面
3.對內容頁寫抽取規則
4.開始爬蟲dom
好了,那咱們就開始了工具
第一步來:這個網站的入口url很簡單,就一個頁面學習
http://www.qiegaowz.com/product/Default.html
就是他了,也沒別人
第二步:內容頁面就是那5個商品的頁面
http://www.qiegaowz.com/product/5ee97997-1700-4d19-b93a-6bd7c930fefe.html http://www.qiegaowz.com/product/ccdf1d03-58da-48a9-bfd2-d9c403b56c98.html http://www.qiegaowz.com/product/1f44feec-751a-4656-9e42-ec1cb7d8dee6.html http://www.qiegaowz.com/product/83106246-d38e-42da-a0a4-2289f699b066.html http://www.qiegaowz.com/product/a723b3cc-91f0-495f-b7b8-792b4470a6e6.html
神箭手框架裏是將內容頁用正則表達式來限制的,那沒這幾個頁面統一一個正則的話就是
http://www\\.qiegaowz\\.com/product/[0-9a-z]{8}-[0-9a-z]{4}-[0-9a-z]{4}-[0-9a-z]{4}-[0-9a-z]{12}\\.html
什麼?有人以爲這個太難了,那咱們能夠再簡單一點:
http://www\\.qiegaowz\\.com/product/.{36}\\.html
特別提醒,在正則表達式中,"."和"?"這個字符是須要轉義的,這些千萬不能寫錯了。
中間頁的話,就是http://www.qiegaowz.com/product/Default.html
,轉換成正則的格式:
http://www\\.qiegaowz\\.com/product/Default\\.html
第三步:咱們打開其中一個商品的頁面
發現整個頁面沒啥內容,咱們就勉強來分紅三個部分吧,分別是 縮略圖,商品名稱,內容
先看縮略圖:咱們用chrome打開,並打開開發者工具:
根據html的層級結構,主要找class和ID的節點,咱們能夠看到咱們這個圖片的本身的標籤是img標籤,沒有什麼特別的屬性,那沒看他的父標籤,
是<div class="showpic">
咱們來查一下發現這個showpic再整個頁面裏面出現了1次,那麼用這個showpic的class就能夠直接定位到這個圖片,xpath的寫法就是:
//div[contains(@class,'showpic')]/img/@src
簡單解釋下xpath,開始的兩個//表明着從根目錄開始不肯定過了多少級,若是是單/則表明是一級層級關係,class屬性的選擇咱們一般使用contains是爲了防止一個標籤有多個class,最後由於咱們要獲取的是圖片的地址,因此最終咱們要選取到src屬性,好了 咱們寫完以後 用xpathhelper檢測一下對不對
沒問題,另外兩個抽取項在這裏就不詳細解釋了,方式大同小異,直接放結果:
//div[contains(@class,'showpic')]/img/@src //div[contains(@class,'showproduct')]/h1 //div[contains(@class,'shownewdes')]
OK,那麼到這裏,咱們爬蟲的準備工做已經作完了,根據神箭手框架的文檔,咱們將咱們的準備好的代碼組裝一下以下,
var configs = { domains: ["www.qiegaowz.com"], scanUrls: ["http://www.qiegaowz.com/product/Default.html"], contentUrlRegexes: ["http://www\\.qiegaowz\\.com/product/.{36}\\.html"], helpUrlRegexes:["http://www\\.qiegaowz\\.com/product/Default\\.html"], fields: [ { // 商品縮略圖 name: "thumbnail", selector: "//div[contains(@class,'showpic')]/img/@src", }, { // 商品標題 name: "title", selector: "//div[contains(@class,'showproduct')]/h1", }, { // 商品內容 name: "content", selector: "//div[contains(@class,'shownewdes')]", } ] }; start(configs);
到這裏就大功告成了,咱們將代碼複製神箭手後臺代碼中,保存並測試下,順利爬到數據。
不過還有一些遺留問題,如商品內容中有一些咱們不須要的內容,如何去掉,這個咱們能夠在後面的教程中詳細解釋。