整體思路:
先抓取某一類商品的所有的商品ID,存入Redis
從Redis取出商品ID,然后爬取此商品所有評論,存入Mongodb。
分析頁面
商品ID列表
打開筆記本電腦的分類:http://list.jd.com/list.html?cat=670,671,6722,其中url里面的cat=670,671,672就是商品類別,然后頁面上的每一個筆記本電腦都會鏈接到它自己的詳情頁面:http://item.jd.com/1592705.html,url中的1466274就是商品ID,打開詳情頁面以后,確認這個數字就是商品ID了。
所以,想要獲取某一類別的所有商品ID,只需要通過商品列表頁面,就可以把一頁的商品ID取出來。然后,再翻頁,直到沒有新的商品ID出現。或者通過頁面中的最大頁數來判斷。
找到了數據的位置以后,就是如何把它們提取出來了。
提取數據
粘貼的圖像802x427 224 KB
商品的ID,可以看到,是在div下面的data-sku屬性`。所以可以通過正則,來把整頁的商品ID取出來。
data-sku="(\d+)"
用同樣的方法,可以看到最大頁數的地方是這樣的:
1/208
所以繼續用正則(這個地方用XPATH感覺更好),來將其中的208取出來
fp-text.+?(\d+)
某個商品的評論信息
點進一個商品詳情,隨便選取一段評論,在網頁的源碼中無法查到,說明評論數據是之后加載的。打開開發者工具中的Network頁面,點擊下一頁的評論,可以看到如下:
粘貼的圖像1398x465 237 KB
其中被我選中的這個請求,就是獲得這個商品評論的方式。也就是:http://s.club.jd.com/productpage/p-[skuid]-s-0-t-0-p-[page].html。
第一次嘗試
上述內容中,已經知道了如何獲得某一類商品的ID,以及知道如何獲得商品的評論數據了。所以,就可以開始最基本的爬蟲的編寫了。但是編寫前,有一個事情需要確定,那就是京東的**反爬蟲**機制。所以,寫了兩個簡單的腳本,來獲取相應的數據。
獲取商品列表的代碼