目的 各大电商竞争越来激烈,为了提升客户服务质量,除了打价格战外,了解客户的需求点,对消费者的文本评论进行数据挖掘,倾听客户的心声越来越重要。 工具 1、贝壳采集器 2、Google浏览器 3、 + Pycharm 数据采集 ①本文对京东平台的手机进行爬虫,首先进入京东商城,选择一款手机,这里以华为Mate 30 Pro 5G为例 ②在采集平台输入网址,点击贝壳采集开始配置信息 ③因为是采集评论所以还需要进行下预操作配置切换页面:点击预操作按钮-->添加点击元素按钮-->左键点击流程图中添加元素按钮(悬浮显示操作键)-->点击悬浮显示操作键<选择按钮> -->点击网页商品评论TAB页切换按钮 -->点击保存④没有识别出评论信息,手工操作下:清空字段-->更改页面类型为手工识别列表 --> 选中两个一样元素(这里两个用户名称) -->下一页未自动识别成功-->更改分页类型为手动点击下一页-->配置完成-->开始采集 数据预处理 当我们通过爬虫获取到我们想要的数据之后,进行简单的观察,可以发现评论的一些特点: 文本短,基本上大量的评论就是一句话. 情感倾向明显:明显的词汇如”好” “可以” 语言不规范:会出现一些网络用词,符号,数字等 重复性大:一句话出现词语重复 数据量大. 故我们需要对这些数据进行数据预处理 数据预处理包括:去重、分词等 下面我们将进行数据清洗 import jieba#评论内容进行去重 def quchong(infile, outfile): infopen = open(infile, 'r', encoding='utf-8') outopen = open(outfile, 'w', encoding='utf-8') lines = () list_1 = [] for line in lines: if line not in list_1: (line) (line) () ()quchong("E:/comments/华为", "E:/comments/P30去重.txt")# ('') #创建停用词list def stopwordslist(filepath): stopwords = [() for line in open(filepath, 'r', encoding='utf-8').readlines()] return stopwords#对评论内容进行分词 def seg_sentence(sentence): sentence_seged = (()) stopwords = stopwordslist('') #这里加载停用词的路径 outstr = '' for word in sentence_seged: if word not in stopwords: if word != '\t': outstr += word outstr += " " return outstrinputs = open('E:/comments/P30去重.txt', 'r', encoding='utf-8') outputs = open('E:/comments/P30分词.txt', 'w') for line in inputs: line_seg = seg_sentence(line) #这里的返回值是字符串 (line_seg + '\n') () () print('分词完毕') 数据分析 上面我们已经通过去重和jieba分词将爬取的内容进行了预处理,接下来就开始对处理过的数据进行分析,包括词频统计、关键词提取以及词云的生成等 #词频统计 import from collections import Counter #词频统计with open('E:/comments/P30分词.txt', 'r', encoding='utf-8') as fr: data = (()) data = dict(Counter(data))with open('E:/comments/P30词频.txt', 'w', encoding='utf-8') as fw: # 读入存储wordcount的文件路径 for k, v in (): ('%s, %d\n' % (k, v)) import import as plt from wordcloud import WordCloud#生成词云 with open('E:/comments/P30词频.txt') as f: #提取关键词 data = () keyword = (data, topK=50, withWeight=False) wl = " ".join(keyword)#设置词云 wc = WordCloud( #设置背景颜色 background_color = "white", #设置最大显示的词云数 max_words=2000, #这种字体都在电脑字体中,一般路径 font_path='C:/Windows/Fonts/', height=1200, width=1600, #设置字体最大值 max_font_size=100, #设置有多少种随机生成状态,即有多少种配色方案 random_state=30, )myword = (wl) #生成词云 #展示词云图 (myword) ("off") () ('E:/comments/') #把词云保存下