1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 小白某东商品评论爬虫+词云 python

小白某东商品评论爬虫+词云 python

时间:2019-06-05 12:29:47

相关推荐

小白某东商品评论爬虫+词云 python

**能实现:**某东单商品100页以内的评论内容抓取,以及将评论内容的高频词做成任意你想要形状的词云图。

我真真系纯小白,为了爬虫评论,看了很多教程,还是云里雾里。下面的代码,是我这个小白的东平西凑的,运行无碍,但是有点笨,希望大神指导下~~~

-第一步,评论扒下来

#导入需要的库,如果提示你没有,你就pip install (你要安的库)import requestsimport re#设定爬虫目标网址url = '/list.html?cat=1620,13780'headers = {#从哪个页面发出的数据申请,每个网站可能略有不同'referer':'/home.html',#用的哪个浏览器,这个得换成你自己的'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36',#哪个用户想要看数据,是游客还是注册用户,建议使用登陆后的cookie'cookie': '这里面粘贴你的cookie'}data = requests.get(url,headers = headers).text#发现规律-套路# 搞一个匹配规则出来,'"rateContent":"想要的评论内容","fromMall"'myPatten = "<em>(.*)</em>"pat = pile('"content":"(.*?)","creationTime"')myList = re.findall(myPatten,data)#如何获得更多页的评论呢?通过改变评论url的页码数import timetexts = []for n in range(1,2):#这个是页数范围,左开右闭的,像现在这样就是只有1页评论url = '/comment/productPageComments.action?callback=fetchJSON_comment98&productId=8127177&score=0&sortType=5&page='+str(n)+'&pageSize=10&isShadowSku=0&rid=0&fold=1'#增加延时控制速度,不容易触发反爬,这个一定要写time.sleep(3)data = requests.get(url,headers = headers).texttexts.extend(pat.findall(data))print('爬完了'+str(n)+'页')#非必须,了解进度#保存数据import pandas as pd#创建一个空的数据表df = pd.DataFrame()df['评论'] = textsdf.to_excel('舒肤佳评论数据1.xlsx')

到这一步,评论已经抓下来了,但是需要手动简单的处理下。

有没有大神指导下,我这个代码里面需要添点啥,能去除评论里面的乱七八糟的字符,以及保存为txt格式?感恩

手动处理的步骤:把你存下来的excel文件打开,另存为csv格式。再将csv格式的文件用记事本打开,另存为txt格式。——小白式搬砖操作,啊,大佬指条明路~

- 第二步,词云图搞上去

#又又又导入一批库,同上,没有就安装下import wordcloud #导入词云库import numpy as npimport matplotlib.pyplot as pltimport PILimport jieba #这个是中文分词的import rewith open(r'C:\Users\hmhhx\spidernew0513\舒肤佳评论数据1.txt',encoding='utf8') as f:#这是你上面存好的txt的路径,改成你自己的text1 = f.readlines()#导入图片image1 = PIL.Image.open(r'C:\Users\hmhhx\Desktop\ditu.jpg')#这是你自己的图片路径,记得改MASK = np.array(image1)WC = wordcloud.WordCloud(font_path = 'C:\\Windows\\Fonts\\MSYHL.TTC',#设置字体,不指定就会出现乱码,这个字体文件需要下载,win10在电脑右下角搜字体就能出来字体的路径max_words=2000,mask = MASK,height= 2000,#设置背景高width=1500,#设置背景宽max_font_size=100,# 最大字体min_font_size=20,# 最小字体background_color='white',#设置背景色scale=4,# 按照比例进行放大画布,如设置为1.5,则长和宽都是原来画布的1.5stopwords={'舒肤佳','而且','非常','沐浴露'}, #设置停用词,停用词则不再词云图中表示repeat=False,mode='RGBA') #设置词云图对象属性st1 = re.sub('[,。、“”‘ ’]','',str(text1)) #使用正则表达式将符号替换掉。conten = ' '.join(jieba.lcut(st1)) #此处分词之间要有空格隔开,联想到英文书写方式,每个单词之间都有一个空格。con = WC.generate(conten)plt.imshow(con)plt.axis("off")WC.to_file('result.png')

好了,完事儿。我输出的图片这样子的,挺清晰叭~~~把scale设置大一点就清晰了,但是不能设置太大,万一累到电脑呢。。。。

我这个是基础版的,我看这个写的挺好的,数据蛮多,但是我搞不来,老出错(小白的尴尬,也不好老去问博主)

你们要是看得懂,我觉得这个应该更厉害些:/daryl5/article/details/105931936#comments_12246467

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。