背景:
每天会收到一篇内部的行业信息的收集资料,内容大致如下:
XXXXX教育早报,2023年1月6日,星期五,农历腊月十五
【要闻速递】
*教育部日前公示2022年职业教育国家级教学成果奖推荐成果,经资格审查共有1415项推荐成果符合要求,公示期自2023年1月4日至2023年4月3日。
*高职本科专业学士学位授予学科门类对应表出炉。
【职教动态】
*山东明确,支持10所左右的高水平本科高校办好一批职业技术师范专业,与产教融合型企业共建职业技术师范教育基地。
*山东省公示第二批高水平中等职业学校建设计划项目遴选评审结果。
【普教动态】
*《江西省义务教育新课程实施办法》日前印发,明确小学阶段开设英语,起始年级为三年级;劳动在一至九年级开设,每周1课时。每学年设立劳动周,可在学年内或寒暑假自主安排,以集体劳动为主等。
*《贵州省“十四五”公共服务规划》印发实施,明确在乡村区域公办幼儿园实现乡镇和中心村全覆盖,普惠性幼儿园覆盖率达到 83.36%等教育发展基础上,形成幼有善育、学有优教等新格局。
XXXXX教育——领先的新一代数字技术教育科技企业,积极为您提供教育行业前沿资讯。
每天这个信息量这么大,还做了分类,那能不能快速将这部分信息进行归类分组,入库,然后在进行页面展现,把静态的信息变成了更有价值的动态信息呢?
解决方案:
- 数据分析
第一、有个新闻欢迎标题,有提供的单位名称,时间,还有一个农历时间
第二、新闻前面有个分类的分组标签
第三、一个分组标签下的新闻内容可能是多条
第四、最后还有一个结束语
2. 数据解析
def cal_news(self, news:str):
#解析新闻文本内容
news = news.split('\n')
start = True
newsindex = 0
newsdate = ''
groupname = ""
index = -1
linecount = len(news)
for line in news:
index +=1
if start:
start = False
newsdate = line.split(',')[1]
newdate = datetime.datetime.strptime(newsdate, "%Y年%m月%d日")
newsdate = newdate.strftime('%Y-%m-%d')
self.insert_news(groupname='xwbt',news=line, newsdate=newsdate)
continue
#跳过空行
if line.strip() == '':
continue
for item in self.groupname:
if item.get('groupname') == line:
groupname = item.get('mininame')
newsindex = 0
break
newsindex += 1
if newsindex > 1:
if index < linecount - 1:
self.insert_news(groupname=groupname, news=line, newsdate=newsdate)
else:
self.insert_news(groupname='xwjy', news=line, newsdate=newsdate)
def get_group_info(self):
"""
返回分组信息
:return:
"""
sql = "SELECT `groupname`, `mininame` FROM `news_group` "
return self.dbm.query_all_by_sql(querysql=sql)
def insert_news(self,groupname, news, newsdate):
"""
插入到库表中
:param groupname:分组
:param news:新闻资讯内容
:return:
"""
sql = "INSERT INTO `news_info`(`mininame`,`news_info`, `news_date`) " \
"VALUES('{}', '{}', '{}') ".format(groupname, news, newsdate)
self.dbm.insert_db_by_sql(excutesql=sql)
3.数据入库
入库前,需要进行库表设计一下
分组分类表
新闻内容表
4.数据查询生成
增加一个视图来查询
当然做一个入口方便进行数据的录入.
5.数据的导入窗口:
至此一个从数据源头进行数据采集,解析,入库,查询的简单工序就完成了,后期就可以利用数据库的强大功能,对这个大数据进行汇总,分析,提升更多有价值的资讯了。好了今天的分享就到了,感谢大家的欣赏。