栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Python:物联网数据分析课程设计动态新闻标题热点挖掘

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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 #获取页面新闻信息 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: 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('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())

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/950277.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号