新闻搜索系统之Python

新闻搜索系统 版本说明 YNews 使用 Python 3,7,0 编写,后端使用 Django 2,1,1,共爬取了人民网的 4136 篇新闻信息,并据此数据库建立了一个新闻搜索系统

本文包含相关资料包-----> 点击直达获取<-------

新闻搜索系统

版本说明

YNews 使用 Python 3.7.0 编写,后端使用 Django 2.1.1,共爬取了人民网的 4136 篇新闻信息,并据此数据库建立了一个新闻搜索系统。

使用方法: YNews 目录下在控制台输入 python manage.py runserver,后在浏览器打开 可进入首页。

设计思路

新闻爬取与预处理部分

/data/getdata.py:

爬取网页部分。从人民网首页 始,使用 HTMLParser 解析文件,将所有 标签的 href 属性值,即 url 链接提取出来,加入 pagelist(此处判断是否重复加入,防止两个网页之间的死循环)。再从 pagelist 中依次访问这些 url,提取下一个网页内的 url 并加入 pagelist。同时,每次提取到 url 时,使用正则表达式判断此 url 是否为新闻页面的格式,如果是则将此 url 链接到的 HTML 文件保存下来,存储在/data 文件夹里,仅为了备份。为了解压方便,已删除这些 HTML 文件。

c++ /data/cutdata.py:

内容预处理。得到所有新闻的 HTML 文件后,用 HTMLParser 将网页内新闻的标题、发布时间和正文提取出来,存入 news 字典中,key 为每篇新闻的 ID。针对网页内正文提取不干净的情况(如经常出现登录人民网、微信扫一扫和视频推荐等字样),适当地过滤文本内容。每篇新闻提取后的结果也储存在/data 文件里,仅为了方便人工查看。在得到 news 字典后,使用 jieba 分词系统,并对除了标点、\s 等内容外的每个词建立倒排索引 index 字典,key 为词,value 为含有该词的新闻 ID(可重复)。将 news 字典和 index 字典用 pickle 打包成 newspkg 和 indexpkg,方便传入 django 后端。

c++ /data/simi.py:

此为推荐搜索的预处理。得到 news 字典后,使用 jieba 分词中的 tfidf 模型,即关键词获取(analyse.extract_tags),提取出每篇新闻的关键词。对每篇新闻,比对其它新闻的关键词与这篇新闻的相同词的个数,选出排名最高的前四篇,将其 ID 作为相关推荐新闻,存储在 rcmd 字典里。将 rcmd 字典也 pickle 成文件 rcmd。

搜索后端及前端显示部分

主要代码在 search/views.py 中。

首先将 pickle 文件 newspkg, indexpkg 和 rcmd 解码成三个字典 news, index 和 rcmd,并将 news 加工成缩略的版本 newspiece 字典。分页采用后台分页,根据要显示的新闻数量计算出总页码,根据 url 末尾的参数得到当前页数,并将对应的新闻切片传入 HTML 文件。

当接到搜索请求时,POST 方法得到搜索的内容和时间限制。在 searchfor 函数中搜索并计时。searchfor 函数将关键词根据空格分成多个关键词,并对每个关键词提取出 index 字典中的索引列表,根据时间要求过滤后计算出列表中每个新闻 ID 出现的次数并排序,同时在新闻内容中找到出现关键字的部分,截取这一部分的 200 字摘要。最后得到结果列表,在 views.result 中处理分页并传给 HTML 显示。

新闻页的相关推荐只需要使用 rcmd 字典即可。

前端可在首页、搜索页、结果页和新闻详情页之间跳转。排版部分用到了 CSS,高亮显示使用了 JavaScript。

打开首页时采用了重定向方法,自动跳转至首页第一页。

功能说明

首页

首页分页展示所有新闻,每页 30 篇。点击【全站搜索】进入搜索主页,点击新闻标题可跳转至新闻详情页。

搜索页 搜索页参考了当前主流搜索引擎的布局,支持多关键字、时间过滤功能。点击【返回首页】返回至新闻主页,点击【搜索】进入搜索结果页。

结果页

结果页显示当前时间过滤信息,搜索耗时和搜索总量,关键字有高亮效果,摘要自动定位至关键字部分。

新闻总量 4136 篇,搜索“中国”平均搜索耗时约 11.01 ms,搜索“中国 中央 习近平”平均耗时约 12.96 ms。

点击【搜索】重新搜索,点击【高级设置】返回搜索主页,重新设置时间过滤。

结果页也使用分页模式,每页显示 10 篇。

新闻详情页

详情页展示新闻标题、发布时间和完整正文,底部有相关推荐,可推荐与其内容最相似的四篇新闻,并有超链接。点击【返回搜索页】回到搜索主页,【返回首页】返回 YNews 主页。

参考文献

  • 基于SSH2的新闻信息管理平台的设计与开发(青岛大学·张明瑛)
  • 基于SSH2的新闻信息管理平台的设计与开发(青岛大学·张明瑛)
  • 高校新闻资讯整合展示系统的设计与实现(华中科技大学·蔡竞)
  • 基于协同推荐算法的新闻发布系统设计与实现(南京理工大学·曹帅帅)
  • 基于爬虫的网络新闻订阅和跟踪系统的设计与实现(华中科技大学·严园)
  • 基于J2EE的网络舆情分析系统的设计与实现(南京大学·李伟)
  • 新闻事件识别系统的研究与实现(北京邮电大学·李昕)
  • 基于SSH2的新闻信息管理平台的设计与开发(青岛大学·张明瑛)
  • 高校新闻管理与发布系统的设计与实现(湖北工业大学·鄢明亮)
  • 基于J2EE的网络舆情分析系统的设计与实现(南京大学·李伟)
  • 基于协同推荐算法的新闻发布系统设计与实现(南京理工大学·曹帅帅)
  • 基于iOS平台科技新闻推荐系统的设计与实现(大连理工大学·李挺)
  • 南洋学院网络新闻发布系统(电子科技大学·诸国华)
  • 基于web的新闻采编系统的设计与实现(电子科技大学·黄明杨)
  • 网络新闻语料库建设及其分布式检索系统研究(华中师范大学·鲁松)

本文内容包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主题。发布者:源码客栈 ,原文地址:https://m.bishedaima.com/yuanma/35985.html

相关推荐

  • 基于JSP和SQL Server的个人健康数据采集与分析系统

    基于JSP和SQL Server的个人健康数据采集与分析系统 摘 要 进入21世纪以来,人们开始更加关注个体的身体健康,加深了对健康的认识,健康的概念也从无病治疗转变为无病预防
    2024年05月14日
    21 1 4
  • 基于SpringBoot框架的信息技术知识竞赛

    这是一份关于构建信息技术知识竞赛的源代码项目,采用了🔥🔥SpringBoot基础框架🔥🔥,主要编程语言为Java,并结合了Vue技术进行开发,开发工具选择的是Idea或Eclipse
    2024年05月23日
    5 1 1
  • 基于SpringBoot框架的非物质文化网站

    这是一份关于构建一个以非物质文化遗产为主题的网站的源代码,项目基于SpringBoot框架,采用Java语言进行开发,并结合了SpringBoot和Vue,js技术,开发工具包括Idea或Eclipse
    2024年05月23日
    11 1 2
  • 基于Python设计的例句搜索

    例句搜索 本题使用 Python 语言实现,开发环境为 Mac OS 下的 JetBrains Pycharm IDE,最终成品为 Python 命令行 版本以及 Web 版(Django + Vue
    2024年05月14日
    2 1 1
  • 基于springboot的办公oa系统实现源代码

    在当今数字化时代,办公自动化系统(OA)已成为企业提升运行效率,管理流程的重要工具,随着信息技术的不断发展,基于Spring Boot的办公OA系统的开发变得愈发重要,该系统集成了MySQL数据库
    2024年05月07日
    7 1 3
  • 医院挂号管理系统设计与实现源代码,ssh框架+mysql

    这是一个🔥🔥医院挂号管理系统设计与实现源代码🔥🔥的项目源码,开发语言Java,开发环境Idea/Eclipse,这个 医院预约挂号系统开发技术栈为SSH项目,可以作为毕业设计课程设计作业使用SSH三大框架实现一个医院门诊挂号系统
    2024年05月23日
    26 1 3
  • 基于SSM管理系统开发

    毕业设计管理系统 介绍 毕业设计是本科教育的最后一个环节,整个过程包括课题拟定与审核,师生双选,开题报告,文档审核,中期检查,毕业答辩等多个环节,是一项系统而复杂的工作
    2024年05月14日
    4 1 1
  • 基于SpringBoot框架的师生共评作业管理平台

    这是一套采用Java语言编写的🔥🔥SpringBoot为核心的教师学生互动评分作业管理系统源代码🔥🔥,开发中运用了SpringBoot框架及Vue技术,开发工具为Idea或Eclipse
    2024年05月23日
    2 1 2
  • 健身房管理系统

    这是一个🔥🔥基于SpringBoot框架的健身房管理系统设计与实现🔥🔥的项目源码,开发语言Java,框架使用的SpringBoot+vue技术,开发环境Idea/Eclipse
    2024年05月23日
    2 1 2
  • 基于Python制作小恐龙游戏

    基于 Python 设计的小恐龙小游戏 本来想带大家用遗传算法再训一波龙的,于是把自己之前写的仿谷歌浏览器小恐龙代码找了出来,就是这个: Python 制作小游戏(七) 想在它基础上加 AI 控制的代码的
    2024年05月14日
    5 1 1

发表回复

登录后才能评论