新闻搜索系统之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

相关推荐

  • 基于Python的算数编码实验

    基于Python的算数编码实验 一,实验目的 给出算术编码实现的详细原理, 编制编解码程序 设计并实现自适应算术编码(选做) 二
    2024年05月14日
    115 1 25
  • 使用OpenCV和Python进行人脸识别

    使用OpenCV和Python进行人脸识别 前言 人脸识别是什么?或识别是什么?当你看到一个苹果时,你的大脑会立刻告诉你这是一个苹果,在这个过程中,你的大脑告诉你这是一个苹果水果
    2024年05月14日
    5 1 2
  • 基于SpringBoot框架的论坛系统

    这是一套采用Java语言,基于SpringBoot框架构建的论坛系统源代码,项目中融入了Vue技术,开发工具为Idea或Eclipse,该论坛系统设计适用于毕业设计或课程设计任务
    2024年05月23日
    18 1 6
  • 基于Python制作的消消乐小游戏

    基于 Python 制作的消消乐小游戏 导语 哈喽,好久不见,消失人口上线更新一波每月必出的 python 制作小游戏系列文章,本期我们将制作一个消消乐小游戏
    2024年05月14日
    42 1 6
  • 基于springboot的办公oa系统实现源代码

    这是一个🔥🔥基于springboot的办公oa系统实现源代码🔥🔥的项目源码,开发语言Java,开发环境Idea/Eclipse,这个 办公OA系统开发技术栈为SpringBoot项目
    2024年05月23日
    6 1 1
  • Python一卡通项目

    python_xiaoyuanyikatong 常州大学python课设,校园一卡通 参考文献 某公司增值服务管理系统设计与实现(山东大学·吕昊) 基于SSH框架的博客用户分享平台的设计与实现(河北工业大学·刘磊) 铁路企业项目库管理信息系统的研究与实现(上海交通大学·李晓巍) 校园一卡通系统设计与开发(中国海洋大学·黄永刚) 印刷公司内容管理平台的设计与实现(吉林大学·郎彩虹) 基于Asp
    2024年05月14日
    4 1 2
  • 基于ssm和mysql实现的毕业选题管理系统

    基于ssm和mysql实现的毕业选题管理系统 1,项目介绍 1,1 背景分析 计算机技术高度发达的今天,利用信息技术对大量复杂的信息进行有效的管理成为一种普遍而实用的手段
    2024年05月14日
    4 1 2
  • 基于Python的多人在线聊天程序

    基于Python的多人在线聊天程序 项目简介 本项目的选题为项目六:聊天程序,具体项目任务如下所示: 经过开发,本项目最终实现了项目任务 2
    2024年05月14日
    23 1 8
  • 基于SpringBoot框架的学生评奖评优管理系统

    这是一款采用🔥🔥SpringBoot框架构建的学生荣誉评选管理系统源代码,编程语言为Java,我们利用SpringBoot和Vue技术栈进行开发,支持Idea或Eclipse集成开发环境
    2024年05月23日
    3 1 1
  • 从零开始使用webpack 搭建vue项目

    从零开始使用webpack 搭建vue项目 1 创建项目 npm init 生成 package,json 创建 index,html webpack
    2024年05月14日
    6 1 1

发表回复

登录后才能评论