這就繼續,千頭萬緒,不好寫啊,只能東一榔頭,西一棒槌,看得懂就看,看不懂別問
這裡我要實現的是一個抓取著名電商網站ebay.ca的產品信息數據庫的spider
瀏覽器裡輸入
www.ebay.ca/
主頁上就有很多推薦產品信息,但這些產品信息都是經過某些運算後展示給用戶的
是否可以從這裡開始呢?答案是可以,因為該頁中有每個推薦產品的頁面鏈接,這個是可以找到的,然後再從產品頁裡擴展尋找同類或者類似產品,然後再擴展,sounds good?not really。
我需要的是能夠抓取到盡可能多的產品,上述方法雖然可行,但結果不可預測控制。
我需要其他思路。
要抓取盡可能多的產品,但是要有序進行,最好的辦法是分類搜索
回到ebay主頁,發現其頁面左上方有“shop by category”
這將是我的入口
請點擊圖片查看原圖
進入了“Camera&Photo”分類了,進一步選子類“digital Camera” -- snapshot顯示一共有50000多件商品
請點擊圖片查看原圖
好了,下面開始分析具體頁面
首先是url欄目的內容,這個是最關鍵的信息,當然目前還不是我想要的結果
接著是有多少item在這個子類別裡 -- 53925 (當日)
然後是不起眼的display mode -- 事實是,這裡是方便spider更快收集信息的關鍵所在
請點擊圖片查看原圖
為什麼說“display mode”不起眼但很重要呢?
因為我需要抓取盡可能多的數據,如果所有的產品都在一個page上那是最好了,但是ebay是面向買家的,所以它的目的是用最吸引眼球的方式把產品展示給你,所以它限制了每頁可以顯示的產品目錄。但作為spider,我希望每頁顯示越多越好。
點擊View,選擇gallery,這樣產品將以小圖片顯示,無疑每頁內容增多,這是我的興趣所在
當你切換成gallery模式,你得到下面的顯示效果
接著做頁面分析:
最下面一行“1,2,。。。”無疑是分頁信息,這時候item per page再次引起我的興趣,點開一看,哈,最大可以選擇192 -- 亦即一頁允許最多192件商品,bingo
為了演示,我選了96 per page,這時候,我的目光移到了 url
你看見了什麼變化?對,這裡出現了數字 96,如果是192, 那麼192也將出現在url裡
請點擊圖片查看原圖
這還不是關鍵,下面才是本次分析的重點收獲!
因為digital camera分類下有50000多件商品,而我選擇每頁顯示96件,所以為了可以獲得所有產品信息,ebay頁面做了分類,一共有多少頁呢?理論上應該是50000+/96 大約500頁。
但關鍵的是如何得到所有的page呢?
手工點擊當然可以,但我做的是機器人耶。。。所以還得繼續找規律。。。
。。。
當我點擊page 2,我得到了下面的頁面:
這時候我再看看當前的url,wola,相對於第一頁,其url的變化計有:
1) 多了一個 _pgn=2 <---- 第二頁
2) 多了一個 _skc=96 <---- 起始item offset
如果點第三頁,同樣的規律 :lol: :lol: :lol:
請點擊圖片查看原圖