1.項目需求:采用crawl模板自動爬取京東網(wǎng)商品信息。
2.項目分析:
(1)打開京東主頁(http://www.jd.com/)源碼,查看某商品鏈接是否存在于主頁源碼中。若存在,下一步利用xpath表達式提??;若不存在,下一步需要進行抓包分析。

(2)通過查看發(fā)現(xiàn),主頁商品鏈接存在于主頁源碼中,所以不需要進行抓包分析,直接提取。

(3)點進某一類商品(http://shouji.jd.com/),對第二層頁面源碼進行分析,查看商品類別鏈接是否存在于頁面源碼中。

(4)通過查看發(fā)現(xiàn),某類商品類別鏈接存在于頁面源碼中。

(5)點進某類商品的某一種,查看某個商品的鏈接是否存在于這層頁面的源碼中。

(6)通過查看發(fā)現(xiàn)這一層頁面源碼包括該商品的鏈接。

(7)下一層進入該商品頁面https://item.jd.com/100005185603.html。

(8)分析所要爬取的信息是否在商品頁面源碼中,不存在則需要抓包分析。
3.項目實施步驟:
(1)創(chuàng)建爬蟲項目和文件。
scrapy startproject jingdong
scrapy genspider -t crawl jd jd.com
(2)獲取商品鏈接:https://item.jd.com/100005185603.html
(3)通過商品鏈接、抓包結(jié)果分析所要提取商品的ID、標題、店鋪名、店鋪鏈接、價格的提取規(guī)則。
①商品ID:
thisurl = response.url
pat ='item.jd.com/(.*?).html'
thisid = re.compile(pat).findall(thisurl)
②商品標題:
title = response.xpath('/html/head/title/text()').extract()
③商品的店鋪名:
shop = response.xpath('//div[@class="name"]/a/@title').extract()
④商品店鋪鏈接:
shoplink = response.xpath('//div[@class="name"]/a/@href').extract()
⑤商品價格(抓包分析):
priceurl ='https://p.3.cn/prices/mgets?callback=jQuery&skuIds=J_'+str(thisid)
pricedata = urllib.request.urlopen(priceurl).read().decode('utf-8', 'ignore')
pricepat ='"p":"(.*?)"'
price = re.compile(pricepat).findall(pricedata)
(4)創(chuàng)建jingdong數(shù)據(jù)庫和product數(shù)據(jù)表。
(5)編寫jd.py文件。


(6)運行爬蟲。
scrapy crawl jd --nolog
(7)查看結(jié)果。

