本篇做者:小郑同窗html
上周的赠书活动中,收到了楼主送的《利用Python进行数据分析》一书非常欣喜,在这里感谢楼主! 书籍是从京东送来的,因而萌生了一个想法,打算从京东上爬取用户的评论,看看用户对该书的大体评价(虽然我知道这本书是很实用的,确定大多好评)并尝试作一些分析,看还有没有什么有趣的现象~~python
要点:
用到的库:
pandas,numpy,requests,jieba,wordclould
工具:
Pycharm/Spyder
Python:3.6正则表达式
1.爬虫对象浏览器
上京东搜索了一下,弹出了好多的商品,要找确定就找那个评论数最多的,有4600+条评论,足够来分析了.
2.网页分析微信
和大多数状况同样,能够先利用浏览器的开发者工具,对网页的元素进行查看,看评论区是放在哪里,以便咱们爬虫。因而通过一番观察,发现了这个:iphone
点进去,能够看到这个:ide
这个URL才是咱们要找的,那么第二页的评论又是怎么样的URL,一样的,咱们看一下相关的js文件,能够看到:工具
发现不一样页数的评论只需改一下page后面的数字就好了(这里从0开始),复制后打开是这样的:学习
3.爬虫过程3d
接下来就要开始爬虫了,评论一共4600+,每一页是10条,我这里一共爬了400页的评论,大概是4000条。由于原始URL较长,我把它拆成3部分,并设置了每次爬取后休眠0.2秒,爬取过程也不算复杂,直接上代码:
这里爬完后我直接写入了TXT文件里,下次再用就不用爬取了,直接读取文件就行,省点时间。爬取结果是一个接近6M的txt文件.
4.评论信息可视化
1).此次爬虫目的,是想要获取用户的评论信息.
那么首先先来看看评论中的主要关键词都有什么,这里将会用结巴分词来处理,而且会进行词云可视化。先从以前的文件中读出数据,并用正则表达式获取咱们要的评论信息:
html=open("JD_spider.txt",encoding='gb18030').read() print (html)
2).过滤数据
这里不展现初次筛选的结果,可是这里的输出里面还有些“杂质”,包含了一些img字段的,因而要二次处理,并放入列表中:
而后就能够用结巴分词来获取评论中的关键词了:
看一下结果:
{'不错': 0.40207175434791953, 'Python': 0.16516135518025193, '数据分析': 0.14994788647273546, '京东': 0.12511940634626167, 'hellip': 0.09666796964961805, '学习': 0.09155126893924828, 'python': 0.09132451404084518, '好书': 0.08208335052285655, '本书':
...
0.040101087416086145, '入门': 0.037098712017513205, '物流': 0.03442644384797887, '实用': 0.03373438604258838, '快递': 0.03260293097472572, '经典': 0.0324224192260768, '速度': 0.0321156918440187, '东西': 0.03161500710010808}
若是以为这样的话很差看,咱们能够图像化,在此基础上进行词云可视化
5.其余数据可视化
京东的商品评论中包含了不少其余有用的信息,接下来将要把这些信息从页面代码中提取出来,整理成数据表以便进行后续的分析工做.
1).正则对每一个字段进行提取
对于特殊的字段在经过替换等方式进行提取和清洗,先从文本读出数据,而后在进行匹配:
2).保存数据为dataframe
而后咱们将其综合为一个dataframe,方便后面的分析
3).几个有趣的分析图
限于篇幅,我列出了一部分可视乎分析的图,具体的细节能够看文末的源码
从图中能够直接读出,16年11月份达到了最高值,是该书评论最多的一个月份,是否是和双11的降价有关呢?虽然这里的评论数不等同于销量,但多少应该是有所联系的.
不难看出,在同等的时间段里,客户端的使用都要高于PC端。这个能够理解,由于手机确实比在电脑上评论方便得多,随时随地均可以在手机评论,购买。
从用户客户端分布状况来看,其中使用Android的用户要高于iphone用户。因为微信购物和QQ购物在原始数据中单独被分了出来,没法肯定使用设备型号,所以只能单独进行对比。使用微信购物渠道的用户要高于QQ购物,这点也符合当下状况
结论:来自小郑同窗
终于写完了,虽然显示了有2000+的文字,前先后后也是花了几天的时间,但我仍是以为又不够好的地方,多是来自于爬取到数据,多是来自于处理的过程,也多是分析的结论,但愿能抛砖引玉,获得你们的指点。