新闻搜索系统之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://bishedaima.com/yuanma/35985.html

相关推荐

  • 基于SSM框架开发的家校通

    在学校自己写的一个简单的基于 SSM 的家校通系统 本人目前是在校大学生前几个月自己自学了 ssm 开发框架并自己开发了一个简单的家校通系统, 这个系统主要分为是四个主要模块分别为老师
    2024年05月14日
    1 1 1
  • 基于Java+SSM的失物招领平台

    这是一个🔥🔥基于SSM的失物招领平台🔥🔥的项目源码,开发语言Java,开发环境Idea/Eclipse,这个 失物招领平台开发技术栈为SSM项目,可以作为毕业设计课程设计作业基于Java+SSM框架实现一个失物招领平台
    2024年05月23日
    7 1 3
  • 基于SSM的停车场管理系统的设计与实现

    基于SSM的停车场管理系统的设计与实现 摘要 自从进入21 世纪以后,汽车产业迅速发展,伴随着人们生活程度的日益进步的人口的迅速增加,汽车的数量也如雨后春笋般在城市里不断的增加
    2024年05月14日
    12 1 2
  • python数据分析

    python数据分析(7)——挖掘建模(2)聚类分析 1, 常用聚类分析算法 聚类分析建模原理 常用聚类方法 常用聚类分析算法 2
    2024年05月14日
    4 1 1
  • 人事管理系统

    这是一个🔥🔥基于SpringBoot框架的人事管理系统设计与实现🔥🔥的项目源码,开发语言Java,框架使用的SpringBoot+vue技术,开发环境Idea/Eclipse
    2024年05月23日
    1 1 1
  • 基于JSP的学生信息管理系统

    Student-information-managemen 基于JSP的学生信息管理系统 参考文献 开放性实验室管理系统的设计与实现(南昌大学·刘定军) 基于JSP的辽宁大学毕业设计指导系统的设计与实现(吉林大学·王一凡) 基于J2EE的高校人力资源信息管理的设计与实现(四川大学·付明柏) 学生综合信息管理平台的设计与实现(吉林大学·刘铁刚) 基于Web的学生管理信息系统的分析和设计(厦门大学·叶露阳) 基于MVC与ASP
    2024年05月14日
    5 1 1
  • 基于ssm分布式开发实现的电商项目(聚合工程)

    基于ssm分布式开发实现的电商项目(聚合工程) 注:本项目为开源项目,不能用于商业应用,仅供学习, 1,使用工具: maven(构建项目),svn(版本控制工具)
    2024年05月14日
    2 1 1
  • Java+SSH框架实现论坛系统、javaweb+mysql

    在当今数字化时代,网络论坛系统作为在线交流的重要平台,具有广泛的应用前景,Java技术作为一种成熟,稳定的编程语言,结合SSH框架(Spring+Struts2+Hibernate)能够为论坛系统的开发提供高效
    2024年05月07日
    4 1 1
  • 基于python socket 实现的聊天室

    基于python socket 实现的聊天室 聊天室 聊天室用 python socket 实现,socket 分为客户端和服务端 服务端使用 server_socket 监听请求
    2024年05月14日
    4 1 3
  • 基于SpringBoot框架的相亲网站

    这是一份采用🔥🔥SpringBoot为核心的婚恋交友平台源代码🔥🔥,主要编程语言为Java,并结合了SpringBoot和vue技术栈,开发工具为Idea或Eclipse
    2024年05月23日
    3 1 1

发表回复

登录后才能评论