python 爬取豆瓣电影短评并wordcloud生成词云图
最近学到数据可视化到了词云图,正好学到爬虫,各种爬网站
【实验名称】 爬取豆瓣电影《千与千寻》的评论并生成词云
1. 利用爬虫获得电影评论的文本数据
2. 处理文本数据生成词云图
第一步,准备数据
需要登录豆瓣网站才能够获得短评文本数据https://movie.douban.com/subject/1291561/comments
首先获取cookies,使用爬虫强大的firefox浏览器

将cookies数据复制到cookies.txt文件当中备用,
2.第二步,编写爬虫代码
#coding = utf-8
import requests
import time
import random
from bs4 import BeautifulSoup abss = 'https://movie.douban.com/subject/1291561/comments'
firstPag_url = 'https://movie.douban.com/subject/1291561/comments?start=20&limit=20&sort=new_score&status=P&percent_type='
url = 'https://movie.douban.com/subject/1291561/comments?start=0&limit=20&sort=new_score&status=P'
header = {
'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:57.0) Gecko/20100101 Firefox/57.0',
'Connection':'keep-alive'
} def get_data(html):
# 获取所需要的页面数据
soup = BeautifulSoup(html, 'lxml')
comment_list = soup.select('.comment > p')
next_page = soup.select('#paginator > a')[2].get('href')
date_nodes = soup.select('..comment-time')
return comment_list, next_page, date_nodes def get_cookies(path):
# 获取cookies
f_cookies = open(path, 'r')
cookies ={}
for line in f_cookies.read().split(';'): # 将Cookies字符串其转换为字典
name ,value = line.strip().split('=', 1)
cookies[name] = value
return cookies if __name__ == '__main__':
cookies = get_cookies('cookies.txt') # cookies文件保存的前面所述的cookies
html = requests.get(firstPag_url, cookies=cookies,headers=header).content
comment_list, next_page, date_nodes = get_data(html) #首先从第一个页面处理
soup = BeautifulSoup(html, 'lxml')
while (next_page): #不断的处理接下来的页面
print(abss + next_page)
html = requests.get(abss + next_page, cookies=cookies, headers=header).content
comment_list, next_page, date_nodes = get_data(html)
soup = BeautifulSoup(html, 'lxml')
comment_list, next_page,date_nodes = get_data(html)
with open("comments.txt", 'a', encoding='utf-8')as f:
for ind in range(len(comment_list)):
comment = comment_list[ind];
date = date_nodes[ind]
comment = comment.get_text().strip().replace("\n", "")
date= date.get_text().strip()
f.writelines(date+u'\n' +comment + u'\n')
time.sleep(1 + float(random.randint(1, 100)) / 20)
每一页都会有20条的短评,所以我们依次遍历每一页a

第二步,处理爬到的数据,在第一步当中已经将数据存档到了commit.txt文件当中,

# -*- coding:utf-8 -*- import jieba
import matplotlib.pyplot as plt
from wordcloud import WordCloud,ImageColorGenerator
from scipy.misc import imread f_comment = open("comments.txt",'rb')
words = []
for line in f_comment.readlines():
if(len(line))==12:
continue
A = jieba.cut(line)
words.append(" ".join(A))
# 去除停用词
stopwords = [',','。','【','】', '”','“',',','《','》','!','、','?','.','…','1','2','3','4','5','[',']','(',')',' ']
new_words = []
for sent in words :
word_in = sent.split(' ')
new_word_in = []
for word in word_in:
if word in stopwords:
continue
else:
new_word_in.append(word)
new_sent = " ".join(new_word_in)
new_words.append(new_sent) final_words = []
for sent in new_words:
sent = sent.split(' ')
final_words +=sent
final_words_flt = []
for word in final_words:
if word == ' ':
continue
else:
final_words_flt.append(word) text = " ".join(final_words_flt)
处理完数据之后得到带有空格的高频词

第三步,生成词云图:
首先安装python的wordcloud库
pip install wordcloud

在第二步text后面加上下面代码生成词云图
font = r'C:\Windows\Fonts\FZSTK.TTF'
bk = imread("bg.png") # 设置背景文件
wc = WordCloud(collocations=False, mask = bk, font_path=font, width=1400, height=1400, margin=2).generate(text.lower())
image_colors = ImageColorGenerator(bk) # 读取背景文件色彩
plt.imshow(wc.recolor(color_func=image_colors))
plt.axis("off")
plt.figure()
plt.imshow(bk, cmap=plt.cm.gray)
plt.axis("off")
plt.show()
wc.to_file('word_cloud1.png')
wordcloud作为对象是为小写,生成一个词云文件大概需要三步:
- 配置词云对象参数
- 加载词文本
- 输出词云文件(如果不加说明默认图片大小是400*200
方法
描述
Wordcloud.generate(text)
向wordcloud对象中加载文本text,例如:wordcloud.genertae(“python && wordclooud”)
Wordcloud.to_file(filename)
将词云输出为图像元件以.png .jpg格式保存,例wordcloud.to_file(“picture.png”)
- 具体的方法上面
wordcloud做词频统计时分为下面几步:
- 分割,以空格分割单词
- 统计:单词出现的次数并过滤
- 字体:根据统计搭配相应的字号
- 布局

最后我么可以看到短评当中处理过后的高频词

我们随便照一张图片读取背景颜色

最后生成的词云图就出来了:

python 爬取豆瓣电影短评并wordcloud生成词云图的更多相关文章
- python 爬取豆瓣电影评论,并进行词云展示及出现的问题解决办法
本文旨在提供爬取豆瓣电影<我不是药神>评论和词云展示的代码样例 1.分析URL 2.爬取前10页评论 3.进行词云展示 1.分析URL 我不是药神 短评 第一页url https://mo ...
- Scrapy实战篇(三)之爬取豆瓣电影短评
今天的主要内容是爬取豆瓣电影短评,看一下网友是怎么评价最近的电影的,方便我们以后的分析,以以下三部电影:二十二,战狼,三生三世十里桃花为例. 由于豆瓣短评网页比较简单,且不存在动态加载的内容,我们下面 ...
- 利用Python爬取豆瓣电影
目标:使用Python爬取豆瓣电影并保存MongoDB数据库中 我们先来看一下通过浏览器的方式来筛选某些特定的电影: 我们把URL来复制出来分析分析: https://movie.douban.com ...
- Python爬取豆瓣电影top
Python爬取豆瓣电影top250 下面以四种方法去解析数据,前面三种以插件库来解析,第四种以正则表达式去解析. xpath pyquery beaufifulsoup re 爬取信息:名称 评分 ...
- python爬取豆瓣电影信息数据
题外话+ 大家好啊,最近自己在做一个属于自己的博客网站(准备辞职回家养老了,明年再战)在家里 琐事也很多, 加上自己 一回到家就懒了(主要是家里冷啊! 广东十几度,老家几度,躲在被窝瑟瑟发抖,) 由于 ...
- 零基础爬虫----python爬取豆瓣电影top250的信息(转)
今天利用xpath写了一个小爬虫,比较适合一些爬虫新手来学习.话不多说,开始今天的正题,我会利用一个案例来介绍下xpath如何对网页进行解析的,以及如何对信息进行提取的. python环境:pytho ...
- python爬取豆瓣电影Top250(附完整源代码)
初学爬虫,学习一下三方库的使用以及简单静态网页的分析.就跟着视频写了一个爬取豆瓣Top250排行榜的爬虫. 网页分析 我个人感觉写爬虫最重要的就是分析网页,找到网页的规律,找到自己需要内容所在的地方, ...
- scrapy-redis爬取豆瓣电影短评,使用词云wordcloud展示
1.数据是使用scrapy-redis爬取的,存放在redis里面,爬取的是最近大热电影<海王> 2.使用了jieba中文分词解析库 3.使用了停用词stopwords,过滤掉一些无意义的 ...
- Python 爬取豆瓣电影Top250排行榜,爬虫初试
from bs4 import BeautifulSoup import openpyxl import re import urllib.request import urllib.error # ...
随机推荐
- React的性能优化 - 代码拆分之lazy的使用方法
我们在某些网站上肯定看到过这样一种现象,页面上图片只有你滚动到那个位置附近的时候才会加载,否则就只占了个位,这就是延迟加载最普遍的应用场景. 我们react框架进行开发的时候也是一样,没有使用的组件是 ...
- 2018-2-13-win10-uwp-资源字典
title author date CreateTime categories win10 uwp 资源字典 lindexi 2018-2-13 17:23:3 +0800 2018-2-13 17: ...
- 深入理解zabbix(二)
深入理解zabbix(二) 链接:https://pan.baidu.com/s/1q5YwJMTcZLcS5OQ0iOu44A 提取码:8gdi 复制这段内容后打开百度网盘手机App,操作更方便哦 ...
- 学习记录:@Transactional 事务不生效
测试时使用spring boot2.2.0,在主类中调用,@Transactional 不起作用,原代码如下: @SpringBootApplication @Slf4j @Component pub ...
- 在Kubernetes下部署Prometheus
使用ConfigMaps管理应用配置 当使用Deployment管理和部署应用程序时,用户可以方便了对应用进行扩容或者缩容,从而产生多个Pod实例.为了 能够统一管理这些Pod的配置信息,在Kuber ...
- 莫队算法 sqrt(n)分块思想
在此说一下本渣对莫队算法思想的一些浅薄理解 莫队算法的思想就是对真个区间的分块,然后按照每块来分别进行计算,这样最终的复杂度可以达到n*sqrt(n) 小Z的袜子是一道非常经典的题目.:题目链接htt ...
- access注入篇+sqlmap
access数据库的来历,我就不说了,因为我懒的记,就算记了感觉上也没大多用处,只要记得数据库的结构就行了.先是表名,然后是列名,再者就是数据,我发个实际的图吧,大概就是这么一个结构. 下面,开始说下 ...
- Codeforces gym102222 B.Rolling The Polygon 凸包/余弦定理
题意: 有一个不保证凸的多边形,让你滚一圈,计算某点滚出的轨迹多长. 题解: 求出凸包后,以每个点为转轴,转轴到定点的距离为半径,用余弦定理计算圆心角,计算弧长. #include<iostre ...
- 超好用的thinkphp5.0/thinkphp5.1分页插件!详细使用步骤(内附代码)
效果 tp5.0使用方法 page下载地址:进入下载页面 提取码:s75k 1,把page文件夹整个目录复制到 目录extend下 2,修改默认配置 app/config.php 把里面的 'pagi ...
- TCP状态转换图解析
本文参考Unix网络编程卷1,对TCP状态转换进行总结,方便掌握TCP链接中各个状态及故障分析. 1.Linux下TCP相关工具 基于Linux系统查看网络状态,首先了解几个基本查看指令. Linux ...