手把手教你寫電商爬蟲-第一課 找個軟柿子捏捏

話說如今基本上你們都在網上買東西,國家經濟數據已經能夠在網絡購物的數據中略微窺見一二,再加上目前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);

到這裏就大功告成了,咱們將代碼複製神箭手後臺代碼中,保存並測試下,順利爬到數據。

圖片描述

不過還有一些遺留問題,如商品內容中有一些咱們不須要的內容,如何去掉,這個咱們能夠在後面的教程中詳細解釋。

相關文章
相關標籤/搜索