基于python的网络爬虫搜索引擎的设计

项目介绍

随着互联网的飞速发展,web已经成为人们主要的检索,和发布的主要平台,在海量的数据中如何快速,准确的找到用户所需要的信息成为人们当前所需求的,而网络爬虫就是为了满足这一需要而产生的研究领域。在现实中我们的资源是有限的,如何在有限的资源中区分我们每个人不同的需求,有的想听歌,有的想看电影,而有的是工作需要的机密文件,不想让别人看,只能自己看等等一系列这样的问题,他能保护每个人的隐私以及满足不同人的需求,因此,分不同用户区分爬取内容还是有研究必要的。

在检索信息和搜集信息中实现web信息展示,核心在于设计网络爬虫模块,主要是全文搜索引擎模块。本文主要设计了全文搜索并实现页面搜集器的详细介绍,该工作流程影响到核心算法和数据的存储,克服了该技术难点,实现良好的实际运行和良好的效果,进一步改进引擎效果。
本网站基于B/S模式对该爬虫网站进行设计,并要求爬取的操作简单,多用户数据鲜明,开发一个爬虫网站实现对多用户管理,数据分层管理,并且把数据存储到指定的数据库中。区分出重复的网页,解决去重问题;加上主题的相关性;更快速的抓取数据;存储数据;实现数据可视化。
关键词:搜索引擎; 网络爬虫; 信息检索; 页面索引

使用python提供的开放源代码django应用框架,Django 更关注的是模型(Model)、模板(Template)和视图(Views),也就是MTV模式。

想要打开登录界面,可以使用操作如下:
(1) 安装python3.6 版本
(2) 安装 Django库 1.11.4版本 pip install Django==1.11.14
(3) 安装 selenium库 3.141.0 pip install selenium
(4) 安装 jieba库 0.39版本 pip install jieba
(5) 在命令行下进入 xxx\Web_Spider_Demo\mysite_login\的目录下,运行manage.py(运行方法:python manage.py runserver),成功运行后,打开浏览器(google),输入网页主页:127.0.0.1:8000/index。
(6) 在登录时,使用注册时候的账号密码就可以登录自己的界面,获取填写的数据是否和注册时候的信息进行对比,如果相同,就可以登录进入,使用该网站的功能。

爬虫搜索
设计从网页中选择其中一部分的url,将url放入url队列中,对这些url中的链接进行解析,将内容下载下来,将其存储在固定的页面库中,建立对应的索引,从中抽取出所包含的所有链接信息如果分析中该url没有在缓存中出现过,则这个url调度下的队列就会被重新抓取一遍,直到抓取到对应的网页为止。完成一个完整的抓取过程,出现的爬虫有很多种类:
(1)批量型爬虫(Batch Crawler):分批次对数据进行抓取想要得到的目标和范围,当爬虫达到这个设定的目标后,即停止抓取过程。至于具体目标可能各异,也许是设定抓取一定数量的网页即可,也许是设定抓取消耗的时间等。
(2)增量型爬虫(Incremental Crawler):在抓取的过程中如果出现新增的网页,机制就会更新网页,可以实现通用的搜索引擎来实现增量的处理。
(3)垂直型爬虫(Focused Crawter):针对不同的特定主题内容,不同的特定行业的网页,就可以从互联网页而里找到与健康相关的页面内容即可,其他行业的内容不在考虑范围。垂直型爬虫一个最大的特点和难点就是:如何识别网页内容是否属于指定行业或者主题。

效果图

请添加图片描述
请添加图片描述
目录
1 引言 3
1.1 发展背景 4
1.2 研究现状 4
2 页面设计 6
2.1 基本工作原理 6
2.2 网页设计 6
2.2.1 注册 7
2.2.2 登录 8
2.2.3 爬虫搜索 8
3 功能实现 10
3.1 基本工作原理 10
3.2 jieba库 10
4 数据库设计 10
5 测试 11
5.1 设计问题 11
5.2 问题层次 12
5.3 测试评定 12
5.4 测试的设计 12
6 结语 13
参考文献 13
致谢 16

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/95044.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【typescript】面向对象(下篇),包含接口,属性的封装,泛型

假期第八篇,对于基础的知识点,我感觉自己还是很薄弱的。 趁着假期,再去复习一遍 面向对象:程序中所有的操作都需要通过对象来完成 计算机程序的本质就是对现实事物的抽象,抽象的反义词是具体。比如照片是对一个具体的…

【C语言】八大排序算法

文章目录 一、冒泡排序1、定义2、思想及图解3、代码 二、快速排序1、hoare版本2、挖坑法3、前后指针法4、非递归快排5、快速排序优化1)三数取中选key值2)小区间优化 三、直接插入排序1、定义2、代码 四、希尔排序1、定义2、图解3、代码 五、选择排序1、排…

基于YOLOv8的安全帽检测系统(3):EMA基于跨空间学习的高效多尺度注意力、效果优于ECA、CBAM、CA,助力行为检测 | ICASSP2023

目录 1.Yolov8介绍 2.安全帽数据集介绍 3.EMA介绍 4.训练结果分析 1.Yolov8介绍 Ultralytics YOLOv8是Ultralytics公司开发的YOLO目标检测和图像分割模型的最新版本。YOLOv8是一种尖端的、最先进的(SOTA)模型,它建立在先前YOLO成功基础上…

操作符keyof的作用是什么

keyof 是 TypeScript 中的一个操作符,它用于获取一个类型的所有属性名(键)组成的联合类型。 使用 keyof 操作符可以在编译时获得一个类型的属性名,然后将这些属性名作为联合类型进行处理或操作。它可以用于访问对象的属性&#x…

超大视频如何优雅切片

背景 有一次录屏产生了一个大小为33G的文件, 我想把他上传到B站, 但是B站最大只支持4G. 无法上传, 因此做了一个简单的探索. 质疑与思考 a. 有没有一个工具或一个程序协助我做分片呢? 尝试 a. 必剪 > 有大小限制, 添加素材加不进去(而且报错信息也提示的不对) b. PR &…

(高阶) Redis 7 第19讲 缓存过期淘汰策略 大厂篇

🌹 以下分享 Redis 缓存淘汰策略,如有问题请指教。🌹🌹 如你对技术也感兴趣,欢迎交流。🌹🌹🌹 如有对阁下帮助,请👍点赞💖收藏🐱‍🏍分享😀 面试题 1. 生产上,redis内存设置的多少 2. 如何配置、修改Redis 内存大小 3. 如果内存满了,如何处理 4. …

GO 中优雅编码和降低圈复杂度

本次主要是聊聊关于使用接口抽象和降低圈复杂度的方式 工作中,难免会遇到老项目老代码,不仅仅需要我们维护,可能还需要我们在原来的垃圾代码上进行新增功能或者是进行优化调整 例如 现有的老代码中关于用户系统这一块就已经经是摇摇欲坠&a…

OpenMMLab【超级视客营】——支持InverseForm Loss(MMSegmentation的第三个PR)

文章目录 1. 任务目标1.1 issue1.2 原理相关资料(论文讲解)InverseFormSTN(Spatial Transformer Networks) 1.3 实现相关资料(相关PR) 2. 理解原理3. 代码实现3.X checklist3.0 Issue中的有效内容3.1 MMSegmentation支持multiple …

flink的计时器

背景 在flink中,我们经常使用ontimer计时器实现很多逻辑的功能,常见的比如某个传感器温度增加连续超过1分钟的告警输出等,本文就来简单记录下计时器的作用 计时器 ontimer的定义 public void onTimer(long timestamp, OnTimerContext ctx…

Context应用上下文理解

文章目录 一、Context相关类的继承关系Context类ContextIml.java类ContextWrapper类ContextThemeWrapper类 二、 什么时候创建Context实例创建Context实例的时机 小结 Context类 ,说它熟悉,是应为我们在开发中时刻的在与它打交道,例如&#x…

大数据-玩转数据-双流JOIN

一、双流JOIN 在Flink中, 支持两种方式的流的Join: Window Join和Interval Join 二、Window Join 窗口join会join具有相同的key并且处于同一个窗口中的两个流的元素. 注意: 1.所有的窗口join都是 inner join, 意味着a流中的元素如果在b流中没有对应的, 则a流中这个元素就不会…

棉花叶病害数据集

Bacterial Blight(细菌性枯萎病):细菌性枯萎病是由细菌引起的棉花疾病,主要受害部位是棉花的叶子和茎。这种病害可以导致叶片枯萎、变色和腐烂,对棉花产量产生不利影响。 Curl Virus(卷叶病毒)…

仿真调试说明——摘抄龙芯杯官方文件

1.仿真调试说明 你需要具备以下知识: 仿真工具的使用,比如Vivado的XsimVerilog的基本语法 通过本文的学习,你将获得:各类仿真错误排查的方法CPU逻辑出错的调试指导Verilog 运算符的优先级 1.1 调试指导思想概述 全局上的调试原…

多卡片效果悬停效果

效果展示 页面结构 从页面的结构上看&#xff0c;在默认状态下毛玻璃卡片是有层次感的效果叠加在一起&#xff0c;并且鼠标悬停在卡片区域后&#xff0c;卡片整齐排列。 CSS3 知识点 transform 属性的 rotate 值运用content 属性的 attr 值运用 实现页面整体布局 <div …

案例题--Web应用考点

案例题--Web应用考点 负载均衡技术微服务XML和JSON无状态和有状态真题 在选择题中没有考察过web的相关知识&#xff0c;主要就是在案例分析题中考察 负载均衡技术 应用层负载均衡技术 传输层负载均衡技术 就近的找到距离最近的服务器&#xff0c;并进行分发 使用户就近获取…

S32K144 GPIO编程

前面的文章介绍了如何在MDK-Keil下面进行S32K144的开发&#xff0c;下面就使用该工程模板进行GPIO LED的编程试验。 1. 开发环境 S32K144EVB-Q100开发板MDK-Keil Jlink 2. 硬件连接 S32K144EVB-Q100开发板关于LED的原理图如下&#xff1a; 也就是具体连接关系如下&#xf…

【C++】vector相关OJ

文章目录 1. 只出现一次的数字2. 杨辉三角3. 电话号码字母组合 ヾ(๑╹◡╹)&#xff89;" 人总要为过去的懒惰而付出代价ヾ(๑╹◡╹)&#xff89;" 1. 只出现一次的数字 力扣链接 代码展示&#xff1a; class Solution { public:int singleNumber(vector<i…

commons-io工具类常用方法

commons-io是Apache Commons项目的一个模块&#xff0c;提供了一系列处理I/O&#xff08;输入/输出&#xff09;操作的工具类和方法。它旨在简化Java I/O编程&#xff0c;并提供更多的功能和便利性。 读取文件内容为字符串 String path"C:\\Users\\zhang\\Desktop\\myyii\…

6-1 选择排序

#include <stdio.h>#define N 1000 int arr[N];/* 对长度为n的数组arr执行选择排序 */ void selectionSort(int arr[], int n);/* 打印长度为n的数组arr */ void printArray(int arr[], int n);void swap(int *xp, int *yp) {int temp *xp;*xp *yp;*yp temp; }int mai…

《C和指针》笔记32:多维数组初始化

文章目录 使用括号进行初始化初始化省略维度 使用括号进行初始化 我们可以给数组赋值一个长长的列表&#xff1a; int matrix[2][3] { 100, 101, 102, 110, 111, 112 };它等价于 matrix[0][0]100; matrix[0][1]101; matrix[0][2]102; matrix[1][0]110; matrix[1][1]111; ma…