
1、选取正则表达式的方式不对。
2、你爬取的内容是动态的,返回的html里没有相应的信息,例如京东的价格,评论,这样就不能用正则表达式来匹配,你需要从接口里爬取。
3、以上两种可能都没有的话,就只有可能你爬的网址有十分强大的反爬虫,就是不让你爬。
目的
各大电商竞争越来激烈,为了提升客户服务质量,除了打价格战外,了解客户的需求点,对消费者的文本评论进行数据挖掘,倾听客户的心声越来越重要。
工具
1、贝壳采集器
2、Google浏览器
3、Python37 + 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 = infopenreadlines()
list_1 = []
for line in lines:
if line not in list_1:
list_1append(line)
outopenwrite(line)
infopenclose()
outopenclose()
quchong("E:/comments/华为P30txt", "E:/comments/P30去重txt")
# jiebaload_userdict('userdicttxt')
#创建停用词list
def stopwordslist(filepath):
stopwords = [linestrip() for line in open(filepath, 'r', encoding='utf-8')readlines()]
return stopwords
#对评论内容进行分词
def seg_sentence(sentence):
sentence_seged = jiebacut(sentencestrip())
stopwords = stopwordslist('stopwordstxt') #这里加载停用词的路径
outstr = ''
for word in sentence_seged:
if word not in stopwords:
if word != '\t':
outstr += word
outstr += " "
return outstr
inputs = 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) #这里的返回值是字符串
outputswrite(line_seg + '\n')
outputsclose()
inputsclose()
print('分词完毕')
数据分析
上面我们已经通过去重和jieba分词将爬取的内容进行了预处理,接下来就开始对处理过的数据进行分析,包括词频统计、关键词提取以及词云的生成等
#词频统计
import jiebaanalyse
from collections import Counter #词频统计
with open('E:/comments/P30分词txt', 'r', encoding='utf-8') as fr:
data = jiebacut(frread())
data = dict(Counter(data))
with open('E:/comments/P30词频txt', 'w', encoding='utf-8') as fw: # 读入存储wordcount的文件路径
for k, v in dataitems():
fwwrite('%s, %d\n' % (k, v))
import jiebaanalyse
import matplotlibpyplot as plt
from wordcloud import WordCloud
#生成词云
with open('E:/comments/P30词频txt') as f:
#提取关键词
data = fread()
keyword = jiebaanalyseextract_tags(data, topK=50, withWeight=False)
wl = " "join(keyword)
#设置词云
wc = WordCloud(
#设置背景颜色
background_color = "white",
#设置最大显示的词云数
max_words=2000,
#这种字体都在电脑字体中,一般路径
font_path='C:/Windows/Fonts/simfangttf',
height=1200,
width=1600,
#设置字体最大值
max_font_size=100,
#设置有多少种随机生成状态,即有多少种配色方案
random_state=30,
)
myword = wcgenerate(wl) #生成词云
#展示词云图
pltimshow(myword)
pltaxis("off")
pltshow()
wcto_file('E:/comments/P30png') #把词云保存下
以上就是关于为什么python中用正则.*输出为空列表全部的内容,包括:为什么python中用正则.*输出为空列表、手机评论文本挖掘与数据分析(Python)、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)