Python:物联网数据分析课程设计动态新闻标题热点挖掘
一、设计内容及目的
(一)设计内容
通过爬取学校新闻网页,获取新闻标题,通过词频统计制作出词云并生成图片。
(二)设计目的
新闻标题是新闻的主旨,从新闻标题中可以进行多种内容的挖掘,通过对学校新闻网的新闻进行分析获得热点词,基于这些标题中的热点词设计并实现构建词云的算法,最后根据词云模型统计热点词的词频,可以快速了解这段时间学校的工作重心和工作内容。
- 总体设计
(一)通过请求头连接到学校新闻网页上,并测试是否连接成功;
(二)获取所有学校网页新闻标题并存放到列表中;
(三)创建词云,把爬取的新闻标题分词,进行词频统计,最后生成词云。
三、详细设计
(一)连接页面模块设计
1.功能设计
(1)请求获取网页:在网页中打开“开发者工具”命令,找到请求标题;
(2)定义getjson()函数测试是否成功获取网页;
(3)通过python Request库的get()方法,构造一个向服务器请求资源的url对象;
(4)属性:response.status_code,HTTP请求返回状态,200表示成功,404表示失败。
2.代码实现
# 导入模块包
import requests
import jieba
import wordcloud
import matplotlib.pyplot as plt
from os import path
from lxml import etree
#请求头
headers={
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
'Accept-Encoding': 'gzip, deflate',
'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6',
'Host': 'www.haue.edu.cn',
'Referer': 'http://www.haue.edu.cn/info/1034/1502.htm',
'Upgrade-Insecure-Requests': '1',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.101 Safari/537.36 Edg/91.0.864.48'
}
#测试是否连接成功
def getjson(url):
response = requests.get(url, headers=headers,timeout=3)
if response.status_code == 200:
return response.content.decode("utf-8")
else:
print("Fail to get page")
return None
(二)获取页面新闻标题模块设计
1.功能设计
(1)定义getPageInfo()函数获取学校页面信息;
(2)通过for循环爬取学校新闻156页新闻标题。
2.代码实现
#获取页面新闻信息
def getPageInfo():
info_list=[]
for i in range (0,155):
if i==0:
url='http://www.haue.edu.cn/xwdt/xxxw.htm'
else:
i = str(i)
url = 'http://www.haue.edu.cn/xwdt/xxxw/' + i + '.htm'
response = getjson(url)
tree = etree.HTML(response)
li_list = tree.xpath('/html/body/div[3]/div/div[2]/div[2]/ul/li')
for li in li_list :
title = li.xpath('./a/text()')
info_list.append(title)
return info_list
(三)词云制作模块设计
1.功能设计
(1)定义createWordCloud()函数实现词云功能;
(2)把获取的所有新闻标题拼接成一个字符串,利用 Python 中著名的分词器 jieba(结巴分词),去除停用词;
(3)利用for循环进行词频统计;
(4)设置词云格式,可以基于本地图片的轮廓设置词云形状,最后生成词云并保存本地。
2.代码实现
#创建词云
def createWordCloud(info_list):
article_dict = {}
content = ''.join('%s' %a for a in info_list)
article_jieba = jieba.lcut(content)
stop_words = set(line.strip() for line in open('stopwords.txt',encoding='utf-8'))
#词频统计
for data in article_jieba:
if len(data) == 1 or data in stop_words:
continue
if data not in article_dict:
article_dict[data] = 1
else:
article_dict[data] += 1
article_list = list(article_dict.items())
cloud_data = ''
# 把爬出来的字符放到该变量中
for word in article_list:
cloud_data += word[0] + ' '
backgroud_Image = plt.imread('bg.jpg')
w = wordcloud.WordCloud(
background_color='white', # 设置背景颜色
mask=backgroud_Image, # 设置背景图片
font_path = "simhei.ttf", # 若是有中文的话,这句代码必须添加,不然会出现方框,不出现汉字
max_words=2000, # 设置最大现实的字数
random_state=30, # 设置有多少种随机生成状态,即有多少种配色方案
max_font_size=200, # 设置字体最大值
)
w.generate(cloud_data)
# 显示词云图
plt.imshow(w)
# 是否显示x轴、y轴下标
plt.axis('off')
plt.show()
# 获得模块所在的路径的
d = path.dirname(__file__)
w.to_file(path.join(d, "词云.jpg"))
if __name__ == '__main__':
createWordCloud(getPageInfo())
四、程序调试结果及分析
(一)连接页面模块调试
这里只测试网页第154页的内容,连接成功并成功读出该页面所有信息。
图4-1 连接页面模块调试图
(二)获取页面新闻标题模块调试
这里我们设计爬出的是每页的新闻标题,放到列表中存储,下图是调试出来的部分列表的信息。
图4-2 获取页面新闻标题模块调试图
- 词云制作调试
用到的本地图片轮廓是中国地图,设置词云的格式:背景为白色,显示中文,最大2000字,30种颜色随机生成,字体最大值为200,运行的结果如4-3图所示。
原程序没有获取网页最新一页信息,经过修改代码,获取最新一页新闻信息,调试后的词云如图4.4所示。
图4-3 词云制作模块调试图
图4-4 词云制作模块调试图
# 导入模块包
import requests
# import re
import jieba
import wordcloud
# import json
import matplotlib.pyplot as plt
from os import path
from lxml import etree
# from bs4 import BeautifulSoup
# from imageio import imread
#请求头
headers={'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9','Accept-Encoding': 'gzip, deflate','Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6','Host': 'www.haue.edu.cn','Referer': 'http://www.haue.edu.cn/info/1034/1502.htm','Upgrade-Insecure-Requests': '1','User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.101 Safari/537.36 Edg/91.0.864.48'
}
#测试是否连接成功
def getjson(url):response = requests.get(url, headers=headers,timeout=3)if response.status_code == 200:return response.content.decode("utf-8")else:print("Fail to get page")return None
#获取页面新闻信息
def getPageInfo():info_list=[]for i in range (0,155):if i==0:url='http://www.haue.edu.cn/xwdt/xxxw.htm'else:i = str(i)url = 'http://www.haue.edu.cn/xwdt/xxxw/' + i + '.htm'response = getjson(url)tree = etree.HTML(response)li_list = tree.xpath('/html/body/div[3]/div/div[2]/div[2]/ul/li')for li in li_list :title = li.xpath('./a/text()')# url = li.xpath('./a/@href')[0]# item = {}# item['title'] = title# item['url'] = 'http://www.haue.edu.cn/' + url[3:]# info_list.append(item)info_list.append(title)return info_list
#创建词云
def createWordCloud(info_list):article_dict = {}content = ''.join('%s' %a for a in info_list)article_jieba = jieba.lcut(content)stop_words = set(line.strip() for line in open('F:/大学学习记录/大三下学期/Python/2020-2021-2物联网数据分析课程设计实训/stopwords.txt',encoding='utf-8'))#词频统计for data in article_jieba:if len(data) == 1 or data in stop_words:continueif data not in article_dict:article_dict[data] = 1else:article_dict[data] += 1article_list = list(article_dict.items())cloud_data = ''# 把爬出来的字符放到该变量中for word in article_list:cloud_data += word[0] + ' 'backgroud_Image = plt.imread('F:/大学学习记录/大三下学期/Python/2020-2021-2物联网数据分析课程设计实训/bg.jpg')w = wordcloud.WordCloud(background_color='white', # 设置背景颜色mask=backgroud_Image, # 设置背景图片font_path = "simhei.ttf", # 若是有中文的话,这句代码必须添加,不然会出现方框,不出现汉字max_words=2000, # 设置最大现实的字数random_state=30, # 设置有多少种随机生成状态,即有多少种配色方案max_font_size=200, # 设置字体最大值)w.generate(cloud_data)# img_colors = wordcloud.ImageColorGenerator(backgroud_Image)# 字体颜色为背景图片的颜色# w.recolor(color_func=img_colors)# 显示词云图plt.imshow(w)# 是否显示x轴、y轴下标plt.axis('off')plt.show()# 获得模块所在的路径的d = path.dirname(__file__)w.to_file(path.join(d, "D:/词云.jpg"))if __name__ == '__main__':createWordCloud(getPageInfo())
Python:物联网数据分析课程设计动态新闻标题热点挖掘相关推荐
- 【Python数据分析学习实例】动态新闻标题热点挖掘
问题描述 新闻标题是新闻的主旨,从新闻标题中可以进行多种内容的挖掘,通过对学校新闻网的新闻进行分析获得热点词,基于这些标题中的热点词设计并实现构建词云的算法,最后根据词云模型统计热点词的词频,可以快速 ...
- python文本热点问题挖掘_Pyhon数据分析项目—动态新闻标题热点挖掘.pdf
<用Python 玩转数据>项目-动态新闻标题热点挖掘 一.背景 新闻标题是新闻的主旨,从新闻标题中可以进行多种内容的挖掘,例如可以爬取一定时 间段内的新闻进行分析获得热点词.新浪各地新闻 ...
- python商业数据分析课程设计_商务数据分析实验室
1 实验室介绍 实验室建设总目标是搭建一站式教学服务平台,一站式教学服务平台概念是在深刻理解高校学科建设及存在的若干问题上提出.围绕着学科建设的各个方面,从专业开设.课程设置.师资培养.教学资源.实 ...
- 动态新闻标题热点分析
动态新闻标题热点分析 背景描述 基本上每天都会发生一些令社会热议的热点新闻舆情事件,我通过python针对这些热点新闻舆情事件热点词汇进行了盘点,汇总并展示热点词可视化,供各位参考. 为完成该项工作, ...
- 操作系统分区分配java算法_合肥工业大学操作系统课程设计 动态分区分配存储管理java版.doc...
合肥工业大学操作系统课程设计 动态分区分配存储管理java版.doc 1课程设计动态分区分配存储管理设计题目学号专业班级学生姓名号指导教师22010年12月合肥工业大学课程设计任务书设计题目动态分区分 ...
- python pandas读取excel时动态确定标题行所在行数
python pandas读取excel时动态确定标题行所在行数,动态跳过标题前空白行 利用python对excel或者csv文件进行批量操作时,除了使用xlrd库或者xlwt库进行表格的操作读与写, ...
- 物联网-传输课程设计-数据采集与显示
物联网-传输课程设计-数据采集与显示 1.总结 2.效果展示 3.步骤说明 一.环境准备 (1)Arduino.ESP8266 Node MCU的开发环境搭建(没有单片机就略过) (2)JDK.Ecl ...
- 【Python飞机大战课程设计及源代码】
摘 要:根据课程要求,以及面向对象程序设计的编程思想,在Windows操作系统环境下,运用PyCharm编译程序,以Python语言为开发语言,最终实现飞机大战游戏相应的游戏操作功能.Python是一 ...
- python网络爬虫课程设计题目_山东建筑大学计算机网络课程设计《基于Python的网络爬虫设计》...
山东建筑大学计算机网络课程设计<基于Python的网络爬虫设计> 山东建筑大学 课 程 设 计 成 果 报 告 题 目: 基于Python的网络爬虫设计 课 程: 计算机网络A 院 (部) ...
最新文章
- abaqus中元素过度失真是什么意思_Abaqus三维多晶体脚本建模Voronoi多面体建模
- oc引导win方法_[拯救老机型]机械革命X6/X5四代标压系列OC测试版更新
- [读书笔记]大型分布式网站架构设计与实践.分布式缓存
- 洛谷P5212:SubString(SAM、LCT)
- 使用 rqt_console 和 roslaunch
- CentOS下rpm命令使用
- 工具的使用——vs2013
- LINUX设置终端窗口显示内容的滚动缓冲行数
- 设置UITextField键盘上return key不可点击
- Android单元测试
- 【android】安卓高仿京东分类页
- 打印时电脑蓝屏或重启的解决办法
- 小松的STM32教程(14)——内部flash模拟eeprom
- 海思芯片中VPSS的group和channel的概念.
- Excel制作动态图表
- vb.net 编写的简易串口调试程序
- Excel利用公式向导不会函数也可去掉文本2端空格
- (加入显示电量功能)模仿魅族、华为、小米电池续航管理软件, 动态水波纹滚动的圆形小球View
- 如何解决 Android浏览器查看背景图片模糊的问题?
- ‘xxxx’ does not name a type报错处理方法
热门文章
- 【技巧】CSDN博客如何快捷设置首行缩进
- ap计算机考点,AP微积分七大考点总结
- 天枢 notebook 配置
- 2023智源大会议程公开丨类脑计算论坛
- python如何控制鼠标_python如何直接控制鼠标键盘
- 郭靖黄蓉之死—附椅天剑屠龙刀的由来...
- pip安装软件出现sys.stderr.write(f“ERROR: {exc}“)问题
- bind9的安装及使用
- 计算机晚会安排,计算机与信息工程学院2019年迎新晚会举行
- 关于初学者如何将GUI界面的按钮(如PushButton)与对应的函数连接起来的问题。PyQt5、信号与槽