爬取京东评论并制作词云图
jieba库
jieba库是python的第三方中文分词库,利用jieba可以更好的实现中文分词。
jieba.cut 方法接受三个输入参数: sentence需要分词的字符串;cut_all 参数用来控制是否采用全模式;HMM 参数用来控制是否使用 HMM 模型。
jieba.cut_for_search 方法接受两个参数:需要分词的字符串;是否使用 HMM 模型。该方法适合用于搜索引擎构建倒排索引的分词,粒度比较细。
jieba支持三种分词模式:
a. 精确模式,试图将句子最精确地切开,适合文本分析;
b. 全模式,把句子中所有的可以成词的词语都扫描出来, 速度非常快,但是不能解决歧义;
c. 搜索引擎模式,在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词。
2.分词更加准确的两种方法
(1)添加自定义词典
载入词典:开发者可以指定自己自定义的词典,以便包含 jieba 词库里没有的词。虽然 jieba 有新词识别能力,但是自行添加新词可以保证更高的正确率
用法: jieba.load_userdict(file_name) # file_name 为文件类对象或自定义词典的路径,可以按照自己定义的词典进行分词
词典格式和 dict.txt 一样,一个词占一行;每一行分三部分:词语、词频(可省略)、词性(可省略),用空格隔开,顺序不可颠倒。file_name 若为路径或二进制方式打开的文件,则文件必须为 UTF-8 编码(保存为txt文件时保存类型更改为UTF-8 编码)。
词频省略时使用自动计算的能保证分出该词的词频
(2)调整词典:
使用 add_word(word, freq=None, tag=None) 和 del_word(word) 可在程序中动态修改词典。
jieba.add_word可以 增加字典内容,比如有效解决“路明非”被分为路明和明非,将容易分错的词语可以通过此方式添加
使用 suggest_freq(segment, tune=True) 可调节单个词语的词频,使其能(或不能)被分出来。
注意:自动计算的词频在使用 HMM 新词发现功能时可能无效。
import jieba
print('='*40)
print('添加自定义词典/调整词典')
print('-'*40)
print('/'.join(jieba.cut('如果放到post中将出错。', HMM=False)))
#如果/放到/post/中将/出错/。
# 调整词典使 中将 变为中/将
print(jieba.suggest_freq(('中', '将'), True))
#494
print('/'.join(jieba.cut('如果放到post中将出错。', HMM=False)))
#如果/放到/post/中/将/出错/。
print('/'.join(jieba.cut('「台中」正确应该不会被切开', HMM=False)))
#「/台/中/」/正确/应该/不会/被/切开
print(jieba.suggest_freq('台中', True))
#69
# 调整词典使 台中 不被分词为台/中
print('/'.join(jieba.cut('「台中」正确应该不会被切开', HMM=False)))
#「/台中/」/正确/应该/不会/被/切开
wordcloud库
1安装wordcloud库
先看看所安装的python适合哪个版本,然后去https://www.lfd.uci.edu/~gohlke/pythonlibs/#wordcloud下载对应的wordcloud版本(本机python pip命令匹配的版本是wordcloud-1.6.0-cp36-cp36m-win_amd64.whl这个文件)
win+r 输入 cmd 打开命令窗口,输入 cd 切换到你下载到的那个文件夹,然后输入pip install wordcloud-1.6.0-cp36-cp36m-win_amd64.whl,回车即可安装。
2.wordcloud使用
wordcloud把词云当作一个对象,它可以将文本中词语出现的频率作为一个参数绘制词云,而词云的大小、颜色、形状等都是可以设定的。
主要是依据单词出现的频率来绘图,因此我们应该过滤一些词即停用表(网上下载即可)
京东爬取评论
利用requests库
打开所要研究的商品页,进入调试窗口,加载数据,找到network
复制一段评论,利用ctrl+F调出搜索框 ,粘贴搜索,找到出现的数据,点击headers可以拿到京东评论数据的接口,preview可以评论数据所对应的键(comments),其中content为用户的评论内容
import requests
import os
import json
import time
import random
from wordcloud import WordCloud, ImageColorGenerator
from os import path
#from scipy.misc import imread
import matplotlib.pyplot as plt
from matplotlib.pyplot import imread
import jieba
import numpy
COMMENT_FILE_PATH='jd_comments.txt'#文件名
d = path.dirname(__file__)# 获取当前文件路径
def spider_comment(page=0):#爬取url='https://club.jd.com/comment/productPageComments.action?........page=%s&pageSize=10&isShadowSku=0&fold=1'%page#%s为page增加的占位符,设置page参数递增headers={'user-agent': 'Mozilla/5.0','referer': 'https://item.jd.com/100008643290.html'}#两个请求头try:r = requests.get(url, headers=headers, timeout=30)r.raise_for_status()#r.encoding = r.apparent_encoding#print("网页请求成功!"+r.text[:500])#return r.textexcept:print("网页请求失败")r_json_str = r.text[26:-2]#截取json数据字符串r_json_obj = json.loads(r_json_str)#字符串转json对象r_json_comments=r_json_obj['comments']#获取评价列表数据print('某京东数据:')for r_json_comment in r_json_comments:#遍历评论对象列表with open(COMMENT_FILE_PATH,'a+') as file:#以追加模式写入每行评价file.write(r_json_comment['content']+'\n')print(r_json_comment['content'])#打印评论
def batch_spider_comment():if os.path.exists(COMMENT_FILE_PATH):#写入文件前先清空数据os.remove(COMMENT_FILE_PATH)for i in range(5):#爬取100页spider_comment(i)time.sleep(random.random()*5)#模拟用户浏览,设置爬虫间隔,防止ip被封return COMMENT_FILE_PATH
# 添加自己的词库分词
#def add_word(list):#for items in list:#jieba.add_word(items)
def jiebaclearText(text):# my_words_list = ['供给侧'] # 在结巴的词库中添加新词# add_word(my_words_list)mywordlist = []stopwords_path = 'stopwords1893.txt' # 停用词词表seg_list = jieba.cut(text, cut_all=False)liststr="/ ".join(seg_list)f_stop = open(stopwords_path)try:f_stop_text = f_stop.read( )f_stop_text=str(f_stop_text)finally:f_stop.close( )f_stop_seg_list=f_stop_text.split('\n')for myword in liststr.split('/'):if not(myword.strip() in f_stop_seg_list) and len(myword.strip())>1:mywordlist.append(myword)return ''.join(mywordlist)
def set_background(back_coloring_path):#设置生成词云图的背景图片back_coloring = imread(path.join(d, back_coloring_path)) # 设置背景图片return back_coloring
def create_word_cloud(text_jieba,back_coloring):font_path = 'D:\Documents\simkai.ttf' # 为matplotlib设置中文字体路径没# 设置词云属性wc = WordCloud(font_path=font_path, # 设置字体collocations=False,#去重background_color="white", # 背景颜色max_words=2000, # 词云显示的最大词数mask=back_coloring, # 设置背景图片max_font_size=100, # 字体最大值random_state=42,width=1000, height=860, margin=2, # 设置图片默认的大小,但是如果使用背景图片的话,那么保存的图片大小将会按照其大小保存,margin为词语边缘距离)wc.generate(text_jieba)
# 生成词云, 可以用generate输入全部文本(wordcloud对中文分词支持不好,建议启用中文分词),也可以我们计算好词频后使用generate_from_frequencies函数plt.figure()# 以下代码显示图片plt.imshow(wc)plt.axis("off")plt.show()# 绘制词云wc.to_file(path.join(d, imgname1)) # 保存图片,保存到该文件夹下,且为图片命名
if __name__ == '__main__':stopwords = {}#isCN = 1 # 默认启用中文分词text_path =batch_spider_comment() # 设置要分析的文本路径back_coloring_path = "heart2.jpg" # 设置背景图片路径text = open(path.join(d, text_path)).read()text_jieba = jiebaclearText(text)imgname1 = "jdDefautColors.png" # 保存的图片名字1(只按照背景图片形状)back_coloring =set_background(back_coloring_path)create_word_cloud(text_jieba,back_coloring)
感谢:
https://blog.csdn.net/u014044812/article/details/95198791
https://blog.csdn.net/FontThrone/article/details/72782971
爬取京东评论并制作词云图相关推荐
- 爬取B站弹幕制作词云图
大家好,我是天空之城,今天给大家带来,爬取B站弹幕制作词云图. 以下内容部分来自公众号数据分析与统计学之美,号主是大牛,有需要的加他. 首先打开一个b站视频https://www.bilibili.c ...
- Python 爬虫实例+爬取豆瓣小组 + wordcloud 制作词云图
目标 利用PYTHON爬取如下图中所有回答的内容,并且制作词云图. 用到的库 import requests # import jsonfrom PIL import Image from pyque ...
- python爬取豆瓣小组_Python 爬虫实例+爬取豆瓣小组 + wordcloud 制作词云图
目标 利用PYTHON爬取如下图中所有回答的内容,并且制作词云图. 用到的库 import requests # import json from PIL import Image from pyqu ...
- 爬取指定网页并制作词云图
利用python中的库和函数设计一个爬取读书网中"软件与程序设计"栏的程序,并对其书名制作词云图,下载其书封面存储到本地文件中. 构建多个函数分别进行网页的请求,html的获取,所 ...
- python爬虫用什么电脑好_【Python】【爬虫】最近想买电脑,用Python爬取京东评论做个参考...
最近想换电脑,又有点不确定买哪一款.所以决定爬取京东上电脑评论,做个参考,并把最终结果绘制成词云图. 一.先来看下三款电脑评价的词云图 1 用Python爬取京东自营ThinkPad T490s的评论 ...
- 【Python爬虫】最近想买电脑,用Python爬取京东评论做个参考
最近想换电脑,又有点不确定买哪一款.所以决定爬取京东上电脑评论,做个参考,并把最终结果绘制成词云图. 一.先来看下三款电脑评价的词云图 1 用Python爬取京东自营ThinkPad ...
- 爬取京东评论、分词+词频统计、词云图展示
一.爬取京东评论 京东评论竟然全部对外开放 public class CommentCrawler {final static PoolingHttpClientConnectionManager h ...
- Python爬取京东评论(汇编)
目录 一.爬取京东数据详细链接 (一)爬取京东评论 1.文章一 2.文章二 (二)爬取京东商品信息 1.文章一 二.爬虫过程中遇到的一些问题及解决资料 (一)解决爬虫中Response[200]返回值 ...
- python用selenium爬取b站评论并制作词云图
文章目录 前言 一.爬取b站评论 1.selenium配置 2.代码 二.制作词云图 1.下载停用词 2.代码 3.注意事项 三.制作成品 1.初期成品 2.成品 前言 b站视频下的评论是下拉加载的. ...
最新文章
- python字典遍历的几种方法(for in 用法)
- 几个SQL命令的使用
- HTML常见小问题2
- android的log.d不显示结果
- 2021算法竞赛入门班第七节课【图论】练习题
- 几何基础之判断线段相交问题
- 自定义快捷命令程序(VC++加批处理)
- spring boot2.x设置session有效时间_Spring 源码解析 Scopes 之 Request 、Session 、Application...
- 数论分块练习([CF830 C]Bamboo Partition + [hdu 6395]Sequence )
- python量化数据处理小细节2
- 化工原理物性参数_化工原理
- php 5.4 +iis+mysql_IIS+FastCGI+PHP5.4.4搭建PHP环境
- 常见数据类型的手机二维码生成与识别格式参考
- Python根据歌曲id爬取网易云音乐歌词
- 【PS】4组318张超高清叠加层+PS动作图片素材
- Unity关于Layer的管理
- c语言编程线性规划,使用C语言实现单纯形法求解线性规划问题.doc
- 直播电商平台开发,点击让窗口抖动动画效果
- TCP传输的终极秘密
- 知云文献翻译跨页内容选中翻译操作