备注:本人在知乎上有同名文章,如有需要请移步:https://zhuanlan.zhihu.com/p/146265932
1、总结
首先亮出最终结果,这个小demo从无到有,前前后后共花了大半年时间,在2019年***月份完工的,现在将其分享出来,如有需要请自取,链接在文末。
话不多说,先放数据汇总:

商品总数是250W,评论总数是1520W,全部数据都加了去重处理,保证每个网站的商品都是没有重复的。
PS:最近又重新抓了一下,商品加评论一共大概是8000W左右了
这里说明一下,苏宁和国美应该是全部抓取结束了的,京东由于2019年3-4月期间更换了验证方式,即使上IP池效率也很低,所以后期并未将主要工作放在京东上。再加上后期老板通知数据量够了,所以有的商品没有去抓,还剩下大概220W的商品没有去抓,整个工作也就不再进行下去了。
其中商品数据和评论数据主要包括如下,这里以抓到的苏宁和京东的商品信息为例:

商品信息主要包含商品唯一标识productid,商品信息product,其中又可分为商品类别productcategoeies,商品名productname,商品价格product_price以及商品描述product_description(其中商品类别又分为一级类别、二级类别、三级类别等,比如第二张图中的商品名product_name为“AppleiPhoneX64GB深空灰移动联通电信4G全网通手机”,而他的类别为product_categories中有五级类别,从上到下依次是1、手机/数码配件2、手机通讯3、手机4、Apple5、AppleiPhone X 手机),在此不再赘述。
而评论数据主要包括评论人id-comment_user_id,昵称comment_user_nickname,评分comment_score,所获点赞数comment_like_num,评论文本comment_content,评论时间comment_time。

2、思路简介
爬虫用的是Python写的,数据库用了MySQL和redis作为中间缓冲,最终数据是用MongoDB存的。前期就是傻瓜式操作,分析网站然后解析数据等,后期会的多了在国美和苏宁上加了Scrapy框架,可这时数据量也够了就没搞了。
1、京东
最先搞的就是好兄弟东哥的网站,京东在没加反扒之前还是很好抓数据的的,先解析每页的数据,找到数据api链接,分析规律即可。前期傻瓜式操作,各种找解决措施,加了很多浏览器的头部信息。


最终文件就是jd.py,其余的文件都是做的一些中间处理,也一并传上来了。
2、苏宁
其实苏宁算是相当友好的一个网站了,基本没有任何反扒,只是加了一些基本的防护措施而已。在这部分,前期依然是傻瓜式的操作,后期知道了seleium,用了一下seleium,返现有点慢,还不如不用呢,跟JD思路差不多,只不过我是先把全站商品URL保存下来,存到MySQL中去,然后再从MySQL中拿URL挨个抓取的,这么做主要是因为实验室总是断电,我又没有想到好的断电再续方式,只好用这种傻瓜式的方法了,哈哈~下面是苏宁评论的API链接,先取得商品ID,再请求评论数据即可。评论URL都是有规律的,很容易就分析出来了。

最终文件是suning.py,我将seleium部分也一传上去,有需要的可以自取,配置好环境就可以跑啦。
3、国美
国美是个小网站,数据并不大,国美是第三个抓的网站,这个时候技术已经很成熟了,相当顺利就抓下来了,跟苏宁思路差不多,我发现加个中间件缓冲效果很好,在Scrapy里用了redis作为中间缓冲,速度相当快。可这时候工作也进入尾声了,老板说数据量够了就不再抓了。

当然了,微末道行跟爬虫大佬们是比不了的,对我而言这只是个获取数据的工具,达到了我的目的我就没再继续研究了,后期在做NLP相关,包括观点词提取等,数据是准备好了,下一步就是处理数据搭网络的事了,gitbub链接如下,如有需要请自取,麻烦点个小星星,哈哈:https://github.com/forthespada/E-commerce
水平一般,哈哈,欢迎指教。