python 爬取视频评论生成词云图

首先爬取评论写入文件,用上一篇爬取腾讯是视频的评论的方法提取评论http://blog.51cto.com/superleedo/2126099

代码需要稍作修改如下:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import re
import urllib.request
import time
import urllib.error

##模拟浏览器安装headers
headers=("User-Agent","Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36")
opener=urllib.request.build_opener()
opener.addheaders=[headers]
urllib.request.install_opener(opener)

vid="2701618945"
cursor_id="6410110614791238846"
str_id=1528290248106
url="http://coral.qq.com/article/2701618945/comment/v2?callback=_article2701618945commentv2&orinum=10&oriorder=t&pageflag=1&cursor="+cursor_id+"&scorecursor=0&orirepnum=2&reporder=o&reppageflag=1&source=1&_="+str(str_id)
curpat='"last":"(.*?)",'
userpat='"nick":"(.*?)",'
contpat='"content":"(.*?)",'

#下面要写入中文,用"w",不用"wb"
fh=open("/home/urllib/test/yun/data.txt","w")
fh.write("abci.\n")
fh.close()
#下面要写入中文,用"a",不用"ab"
fh=open("/home/urllib/test/yun/data.txt","a")

for i in range(1,100):
        data=urllib.request.urlopen(url).read().decode('utf-8')
        data=str(data)
        time.sleep(3)
        for j in range(0,10):
                next_curid=re.compile(curpat).findall(data)[0]
                content_list=re.compile(contpat).findall(data)
                userlist=re.compile(userpat).findall(data)
                try:
                        #解析成中文
                        t1=content_list[j].encode('latin-1').decode('unicode_escape')
                        print(t1)
                        fh.write(t1+'\n')
                except Exception as e:
#                       print("***********该条评论含有有特殊字符************")
                        continue
        url="http://coral.qq.com/article/2701618945/comment/v2?callback=_article2701618945commentv2&orinum=10&oriorder=t&pageflag=1&cursor="+next_curid+"&scorecursor=0&orirepnum=2&reporder=o&reppageflag=1&source=1&_="+str(str_id+1)

fh.close()

提取其中的一千条评论写入data.txt

下面处理词云,使用需要安装wordcloud ,jieba,scipy等多个插件

yum install bzip2 bzip2-devel -y

yum install tk-devel python3-tk

然后重新编译python3(防止bz2,tk报错)

./configure --prefix=/usr/python

make && make install

--------------------------------

安装词云处理

pip install wordcloud

pip install jieba

pip install scipy

----------------------------

准备一些文件

001.jpg                #词云图背景图

ciyun.py                #生成词云图的脚本

data.py                #爬取评论脚本

data.txt                #爬取的数据

msyh.ttf                #微软雅黑 中文配置文件

stopwords.txt        #需要屏蔽的词,注意stopwords文本中词的格式是'一词一行'

----------------------------

下面是脚本内容

#!/usr/bin/env python
# coding: utf-8
import jieba
##必须添加下面两行matplotlib声明
import matplotlib
matplotlib.use('Agg')
from scipy.misc import imread  # 处理图像的函数
from wordcloud import WordCloud, STOPWORDS, ImageColorGenerator
import matplotlib.pyplot as plt

back_color = imread('001.jpg')  # 解析该图片作为词云分布型态

wc = WordCloud(background_color='white',  # 背景颜色
               max_words=1000,  # 最大词数
               mask=back_color,  # 以该参数值作图绘制词云,这个参数不为空时,width和height会被忽略
               max_font_size=100,  # 字体的最大值
               stopwords=STOPWORDS.add('的'),  # 使用内置的屏蔽词,再添加'的'
               font_path="msyh.ttf",  # 解决显示中文乱码问题,文件在电脑的C:/Windows/Fonts/,选微软雅黑
               random_state=42,  # 为每个词返回一个PIL颜色
               # width=1000,  # 图片的长
               # height=618  #图片的宽
               )
# WordCloud各含义参数请点击 wordcloud参数
# 添加自己的词库分词,比如添加'真是醉了'到jieba词库后,当你处理的文本中含有真是醉了这个词,
# 就会直接将'真是醉了'当作一个词,而不会得到'醉了'或'真是醉'这样的词
jieba.add_word('醉了')

# 打开词源的文本文件
text = open('data.txt').read()
# 该stop_words函数的作用就是把屏蔽词去掉,使用这个函数就不用在WordCloud参数中添加stopwords参数了
# 把你需要屏蔽的词全部放入一个stopwords文本文件里即可
def stop_words(texts):
    words_list = []
    word_generator = jieba.cut(texts, cut_all=False)  # 返回的是一个迭代器
    with open('stopwords.txt') as f:
        str_text = f.read()
#        unicode_text = unicode(str_text, 'utf-8')  # 把str格式转成unicode格式  (python2.7使用)
        f.close()  
    for word in word_generator:
        if word.strip() not in str_text:
            words_list.append(word)
    return ' '.join(words_list)  # 注意是空格

text = stop_words(text)

wc.generate(text)
# 基于彩×××像生成相应彩色
image_colors = ImageColorGenerator(back_color)
# 显示图片
plt.imshow(wc)
# 关闭坐标轴
plt.axis('off')
# 绘制词云
plt.figure()
plt.imshow(wc.recolor(color_func=image_colors))
plt.axis('off')
# 保存图片
wc.to_file('result.png')

也可以用其他背景图生成不同个性的词云图

ok,词云图还是很好玩的。

原文地址:http://blog.51cto.com/superleedo/2126729

时间: 2024-10-10 14:57:34

python 爬取视频评论生成词云图的相关文章

Python爬取视频指南

摘自:https://www.jianshu.com/p/9ca86becd86d 前言 前两天尔羽说让我爬一下菜鸟窝的教程视频,这次就跟大家来说说Python爬取视频的经验 正文 https://www.cniao5.com/ 菜鸟窝上有很多教程视频,但是这些视频好像没有直接的下载地址,而且有些教程视频还是有期限的,那么问题就产生了我看的速度比较慢而且视频又很多,没等我看完视频就到期了怎么办?这时候写一个爬虫将这些教程视频下载下来就很好地解决了这个问题 当然,对于某些视频网站的VIP电影.视频

python爬取ajax动态生成的数据 以抓取淘宝评论为例子

在学习python的时候,一定会遇到网站内容是通过ajax动态请求.异步刷新生成的json数据的情况,并且通过python使用之前爬取静态网页内容的方式是不可以实现的,所以这篇文章将要讲述如果在python中爬取ajax动态生成的数据. 至于读取静态网页内容的方式,有兴趣的可以查看博客内容. 这里我们以爬取淘宝评论为例子讲解一下如何去做到的. 这里主要分为了四步: 一 获取淘宝评论时,ajax请求链接(url) 二 获取该ajax请求返回的json数据 三 使用python解析json数据 四

Python爬取新浪微博评论数据,写入csv文件中

因为新浪微博网页版爬虫比较困难,故采取用手机网页端爬取的方式 操作步骤如下: 1. 网页版登陆新浪微博 2.打开m.weibo.cn 3.查找自己感兴趣的话题,获取对应的数据接口链接 4.获取cookies和headers # -*- coding: utf-8 -*- import requests import csv import os base_url = 'https://m.weibo.cn/api/comments/show?id=4131150395559419&page={pa

小白学Python(12)——pyecharts ,生成词云图 WordCloud

WordCloud(词云图) 1 from pyecharts import options as opts 2 from pyecharts.charts import Page, WordCloud 3 from pyecharts.globals import SymbolType 4 5 6 words = [ 7 ("Sam S Club", 10000), 8 ("Macys", 6181), 9 ("Amy Schumer", 43

python爬取视频网站m3u8视频,下载.ts后缀文件,合并成整视频

最近发现一些网站,可以解析各大视频网站的vip.仔细想了想,这也算是爬虫呀,爬的是视频数据. 首先选取一个视频网站,我选的是 影视大全 ,然后选择上映不久的电影 "一出好戏" . 分析页面 我用的是chrome浏览器,F12进入查看.选择NetWork的Doc,发现主体部分的数据是从这个网站获取的. 在地址栏输入这个链接,跳转到了视频来源的播放页面. 当然,在这个页面就可以直接观看视频了,但是我们要把视频下载下来. 寻找视频文件 仍然是之前那个页面,在Other中,我们发现了一些奇怪的

python爬虫爬取QQ说说并且生成词云图,回忆满满!

Python(发音:英[?pa?θ?n],美[?pa?θɑ:n]),是一种面向对象.直译式电脑编程语言,也是一种功能强大的通用型语言,已经具有近二十年的发展历史,成熟且稳定.它包含了一组完善而且容易理解的标准库,能够轻松完成很多常见的任务.它的语法非常简捷和清晰,与其它大多数程序设计语言不一样,它使用缩进来定义语句. Python支持命令式程序设计.面向对象程序设计.函数式编程.面向切面编程.泛型编程多种编程范式.与Scheme.Ruby.Perl.Tcl等动态语言一样,Python具备垃圾回收

python爬取网易云音乐歌曲评论信息

网易云音乐是广大网友喜闻乐见的音乐平台,区别于别的音乐平台的最大特点,除了"它比我还懂我的音乐喜好"."小清新的界面设计"就是它独有的评论区了------各种故事汇,各种金句频出.我们可以透过歌曲的评论数来判断一个歌者的市场分量和歌曲的流行度.言归正传,如果我们想要简单爬取指定歌曲的评论内容来做词云或者其他相关数据分析,有没有容易上手的好方法呢? 首先,我们打开网易云音乐的网页版:https://music.163.com/,随便选择一首歌曲,如林志炫版本的<

抓取网易云音乐歌曲热门评论生成词云

前言 抓数据 抓包分析 加密信息处理 抓取热门评论内容 词云 词云运行效果 总结 前言 网易云音乐一直是我向往的"神坛",听音乐看到走心的评论的那一刻,高山流水.于是今天来抓取一下歌曲的热门评论.并做成词云来展示,看看相对于这首歌最让人有感受的评论内容是什么. 做成词云的好处就是直观以及美观, 其他的我也想不出来有什么了. 抓数据 要想做成词云,首先得有数据才行.于是需要一点点的爬虫技巧. 抓包分析 加密信息处理 抓取热门评论内容 抓包分析 使用Chrome控制台.我们可以轻松的找到评

Python实现Wordcloud生成词云图的示例

wordcloud是Python扩展库中一种将词语用图片表达出来的一种形式,通过词云生成的图片,我们可以更加直观的看出某篇文章的故事梗概. 首先贴出一张词云图(以哈利波特小说为例): 在生成词云图之前,首先要做一些准备工作 1.安装结巴分词库 pip install jieba Python中的分词模块有很多,他们的功能也都是大同小异,我们安装的结巴分词 是当前使用的最多的类型. 下面我来简单介绍一下结巴分词的用法 结巴分词的分词模式分为三种: (1)全模式:把句子中所有的可以成词的词语都扫描出