Scrapy+Redis+Mongodb爬取JD的商品评论

整体思路:

先抓取某一类商品的所有的商品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,以及知道如何获得商品的评论数据了。所以,就可以开始最基本的爬虫的编写了。但是编写前,有一个事情需要确定,那就是京东的**反爬虫**机制。所以,写了两个简单的脚本,来获取相应的数据。

获取商品列表的代码


推荐阅读更多精彩内容