1、文本清理

import pandas as pd
import pymysql
from sqlalchemy import create_engine
import re
import jieba
import jieba.analyse
#1.从数据库导入微博数据并查看
mblog_frame = pd.read_csv('mblog.csv',index_col=None)
mblog_frame.head(2)

# 2.清除text中的非微博正文字符并抽取关键词
# 自定义函数
def clean_text(raw):"""清除text中的非微博正文字符返回值类型为元组"""if raw['raw_text']:text=re.sub('<[^<]*>','',raw['raw_text']) # 清除多余的html语句text=re.sub('[#\n]*','',text) # 清除换行符与#符号text=re.sub('(http://.*)$','',text) # 清除文末的网址return text else:return None
def get_chinese_text(raw):"""清除text中的非中文字符只能提取中文字符,微博中的数字以及英文均会丢失"""if raw['text']:res_text=''.join(re.findall(r"[\u4e00-\u9fff]{2,}",raw['text']))return (raw['mid'],res_text)else:return Nonedef get_keywords(raw):"""使用jieba从中文text抽取关键词默认抽取20个关键词longtext 提取40个关键词"""if raw['chinese_text']:if raw['isLongText'] == 1:# 当text为长文本时,提取50个关键词keywords = jieba.analyse.extract_tags(raw['chinese_text'],topK=50)else:# 当text为非长文本时,默认提取20个关键词keywords = jieba.analyse.extract_tags(raw['chinese_text'])return (raw['mid'],keywords)else:return Nonedef clean_created_date(raw):created_date = raw['created_at']if created_date.endswith('前'):created_date = '09-15'elif created_date.startswith('昨天'):created_date = '09-14'return created_date
#获取清理后的created_date
mblog_frame['created_date'] = mblog_frame.apply(clean_created_date,axis=1)
# 获取清理后的text
mblog_frame['chinese_text'] = mblog_frame.apply(clean_text,axis=1)# 以传入字典items()的形式生成DataFrame,指定列名
res_mblog = pd.DataFrame(mblog_frame,columns=['mid','chinese_text','like_count','comments_count','reposts_count','created_date','user_id'])
# 写入csv文件便于查看数据清洗结果
res_mblog.to_csv('clean_mblog.csv', encoding='utf_8_sig',index=False)
# 获取关键字并转换为分散存储的DataFrame
mid_with_keyword = list(mblog_frame.apply(get_keywords,axis=1))
# 这里要把keywords列表存储到数据库,因此需要将keywords列表分开,并与mid对应
keywords_list = [(raw[0],w) for raw in mid_with_keyword for w in raw[1]]
mid_with_keyword = pd.DataFrame(keywords_list,columns=['mid','keyword'])
# 写入csv文件便于查看结果
mid_with_keyword.to_csv('keyword.csv', encoding='utf_8_sig',index=False)

2、制作词云

# 从数据库读取微博数据
keyword_frame = pd.read_csv('keyword.csv',index_col=False)
# 取出全部的关键词,并生成一个列表
all_keyword = list(keyword_frame.keyword)# 使用collections模块中的Counter统计每个关键词出现的次数,Counter返回一个字典,keyword:count
from collections import Counter
word_freq_frame = pd.DataFrame(Counter(all_keyword).items())
word_freq_frame.columns=['word','count']
top100_freq_word = word_freq_frame.sort_values('count',ascending=0).head(100)
top100_freq_word_dict=dict(list(top100_freq_word.apply(lambda w:(w['word'],w['count']),axis=1)))from wordcloud import WordCloud,STOPWORDS
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei']#用来显示中文标签
plt.rcParams['axes.unicode_minus']=False #用来显示负号
%matplotlib inline
plt.rcParams['figure.dpi'] = 100 #分辨率
wc = WordCloud(background_color="white",max_words=2000,font_path='simhei.ttf')
wc.generate_from_frequencies(top100_freq_word_dict)
plt.imshow(wc)
plt.axis('off')
plt.show()

微博爬虫及舆情分析-3.文本清理与制作词云相关推荐

  1. 招商银行fintech选拔课题---《基于微博爬虫的舆情分析》上

    最近参加了招商银行总行的fintench精英技术训练营的选拔赛,在通过笔试后,进入了课题研究的环节.因为前段时间学习了一段时间Python,所以选择了<基于微博爬虫的舆情分析>这一课题.该 ...

  2. 微博爬虫及舆情分析-1.爬取微博数据

    本文以"Mate30"为关键字进行分析 import requests as re import time #搜索关键字Mate30并获取url target_url = &quo ...

  3. 微博爬虫及舆情分析-4.用户舆情分析

    import pandas as pd import numpy as np #读取训练数据集 mblog=pd.read_csv('clean_mblog.csv',encoding='utf_8_ ...

  4. 微博爬虫及舆情分析-2.用户分析

    import pandas as pd import re #读取数据 user_frame = pd.read_csv('users.csv',index_col=None) user_frame. ...

  5. 基于Python的微博大数据舆情分析,舆论情感分析可视化系统

    运行效果图 基于Python的微博大数据舆情分析,舆论情感分析可视化系统 系统介绍 微博舆情分析系统,项目后端分爬虫模块.数据分析模块.数据存储模块.业务逻辑模块组成. 先后进行了数据获取和筛选存储, ...

  6. python怎么爬取知乎回答并制作词云_爬虫|爬取微博动态

    ​ 爬取微博是爬虫新手入门项目,相对简单.但没想到还是遇到了些问题.. 0 踩点 老规矩第一步先踩点.某个用户的微博网址为:https://weibo.com/u/id,其中id是一长串数字,每个用户 ...

  7. 对爬取的电影《唐人街探案3》豆瓣短评做文本分析,并利用stylecloud制作词云图

    上一节,我们爬取了豆瓣上电影<唐人街探案3>的评论,并将评论保存成了txt文档,爬虫过程可参考:爬取某瓣上电影<唐人街探案3>的评论 本节,我们将对电影短评做文本分析,并利用s ...

  8. Python 爬虫实战(1):分析豆瓣中最新电影的影评并制作词云

    入门Python不久,想做个小项目练练手,碰巧最近一部国产电影<红海行动>反响不错,便萌生想法去抓取一下它最新的评论,并制作词云,来看看网页对这部电影的一些评价,接下来就是开始分析啦(分析 ...

  9. bilibili怎么设置弹幕数量_python爬取B站视频弹幕分析并制作词云

    1.分析网页 视频地址: www.bilibili.com/video/BV19E- 本身博主同时也是一名up主,虽然已经断更好久了,但是不妨碍我爬取弹幕信息来分析呀. 这次我选取的是自己 唯一的爆款 ...

最新文章

  1. C# 网络编程之豆瓣OAuth2.0认证具体解释和遇到的各种问题及解决
  2. Analysis servlet
  3. mac下android环境搭建笔记(android studio)
  4. libevent源码深度剖析十
  5. noi题库(noi.openjudge.cn) 1.8编程基础之多维数组T21——T25
  6. java 原子类能做什么_死磕 java原子类之终结篇(面试题)
  7. Sqlite中文排序
  8. 全球首发联发科天玑1000+手机发布:售价2198元起!
  9. 步进电机为什么无法高速启动?
  10. ERICA: 提升预训练语言模型实体与关系理解的统一框架
  11. UVA 167 - The Sultan's Successors
  12. 室内定位算法_室内外定位技术的几种常用的技术与算法你都知道吗?
  13. 教你分割视频,用多个视频随机合并,添加音频
  14. 快速打开 控制面板下网络和 Internet下的网络连接
  15. 使用朴素贝叶斯进行个人信用风险评估
  16. airtest获取当前设备序列号,并连接
  17. 怎么批量下载哗哩哗哩B站主页视频
  18. 类模板中的友元,友元类
  19. 编程之美——找符合条件的整数
  20. 海康web3.2无插件开发指北

热门文章

  1. 有没有压缩视频的软件?能压缩视频的软件?压缩视频用什么软件比较好?
  2. 前端重要的H标签详解(干货!)最新版
  3. 助力武汉抗击疫情,湖北科研资料共享
  4. 全球及中国大健康产业投资潜力与运营价值分析报告2022-2028年
  5. php 产生国际时间,php时间国际化和本地转换
  6. Makefile经典教程(掌握这些足够)
  7. MATLAB源码-GRABIT从图像文件中提取数据点。
  8. 一篇文章带你发中文核心期刊《计算机科学》
  9. 制作VMware 6.X安装源安装流程
  10. MVC《中国电信》项目研发总结