基于网络爬虫和SpringBoot框架的晋江文学小说小型网站项目

news2025/1/20 18:22:41

一、Python网路爬虫技术的设计与实现

Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架,常可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中。项目中,主要采取Scrapy框架实现一个爬虫,抓取晋江文学网站的热门小说数据。其主要步骤分为四步:

第一步:新建项目——scrapy startproject 项目名称(新建一个新的爬虫项目)

第二步:明确目标——编写items.py:明确抓取的目标,即晋江文学网站小说的书名、作者、链接url、主题、收藏量、阅读量、总字数、简介

第三步:制作爬虫,爬取网页——使用基于浏览器自动化的一个模块:selenium模块,便捷的获取晋江文学小说网站中动态加载数据。利用xpath和正则表达式,解析网页数据

第四步:设计管道存储爬取数据——

基于管道持久化存储的编码流程:

①数据解析。

②在item类中定义相关的属性。

③将解析的数据封装存储到item类型的对象中。

④将item类型的对象提交给管道进行持久化存储的操作。

⑤在管道类的proce_item中要将其接收到的item对象中存储的数据进行持久化存储操作。

⑥在配置文件中开启管道。

二、数据库设计与实现

1、 xiaoshuos表结构

2、Cart表结构

3、User表结构

三、Spring Boot框架的设计与实现

1、MySQL数据库的实现

本项目使用了Python和Java两种语言,而数据库是连接它们的桥梁。数据是整个项目的核心,没有数据库,就没有数据,没有数据,就没有该项目。项目使用的数据库是mysql,连接池使用的alibaba的driud,并在JdbcConfig中完成数据库的配置。

2、SpringBoot框架

 

四、结果展示

本项目采用流行的B/S架构,用户通过浏览器发送的请求都将传送到服务器端进行处理,服务器主要包括数据库以及服务端后台软件。

1、注册登录功能

       登录时,在用户输入账号和密码信息后,浏览器将数据传给服务器,服务器对数据进行检查,若数据库不存在该用户名或用户输入的密码和数据库的密码匹配不上,则服务器会返回相对应的错误提示到浏览器,来提示用户,重新输入。若用户输入的账号和密码都正确,则验证成功,跳转到首页。

       注册账号时,浏览器将用户输入的账号、密码和确认密码的信息传递给服务器,服务器首先在数据库中查找是否有此账号的存在,若该账号已存在,则返回“该账号已存在”的提示到浏览器,若账号不存在,则将用户输入的两次密码进行验证,若两次密码都一样,用户注册的信息正确,数据库会添加该用户的信息,浏览器接收到用户注册成功信息后,也跳转至首页。

登录、注册界面:

2、热门小说推荐

项目基于小说点击量、浏览量数据进行排名,得出的点击量浏览量最高的前8本小说,推荐给读者,读者可以在小说热门推荐页直接对感兴趣的热门小说进行点击,浏览小说的简介。

3、相似小说推荐

项目基于对不同小说进行主题分类,向对某一或多种主题感兴趣的读者进行推荐,使读者更能方便找到和自己兴趣口味的小说。

   

4、看了又看推荐(收藏功能)

当用户浏览小说信息时,可以点击【收藏】,收藏自己感兴趣的小说,浏览器将用户的姓名和小说的id传递到服务器,服务器接收到消息后,在数据库中查找该小说和该用户的信息,并修改用户表中,num值(+1),在cart表中,添加这条记录(用户名,小说书名、作者)。收藏成功后,用户可以在个人书架页面,查看到这本小说。如果用户不需要此书,可在个人书架点击【取消收藏】,同理,服务器接收到消息后,在数据库中查找该小说和该用户的信息,并修改用户表中,num值(-1),在cart表中,删除这条记录。

当用户选择收藏小说时,浏览器也会提示用户“你确定要收藏这本书吗?”

5、模糊搜索书名

当读者想要查找是否有某一本书时,可以在搜索栏输入要查询的书名(模糊查询),服务器识别后在,如果在数据库里查找到有相同字符的书名,则向读者展示,没有查询到则报错。

(1)用户输入“游戏”字符串

(2)数据库查询到带有“游戏”字符的小说有2本,《我在无限游戏里封神》和《穿进赛博游戏后干掉BOSS成功上位》

  

6、浏览小说信息功能(包括了分页查询)

       为了美化页面,项目使用了PageHelper。PageHelper是mybatis的一个插件,其作用是更加方便地进行分页查询。PageHelper的好处是,它是跨平台实现的,无论是使用mysql还是oracle都可以使用PageHelper来进行分页。

      当用户登录成功进入首页后,可浏览晋江文学热门小说的基本信息,其主要包括了小说的书名、作者、主题、总字数、阅读量、收藏量。

      用户还可以查看晋江文学热门小说主题,本项目使用sql分类查询和统计语句,将小说数据根据主题进行分类,并统计主题下小说的数量、总阅读量和总收藏量。以方便用户直接查看某一类小说主题下的小说信息。

      若用户在浏览小说首页或小说详情主题页面时,对某一本小说感兴趣,可以进入小说详情页,查看小说的简介,进一步了解小说的信息。

五、项目总结

       项目利用热门的网络爬虫技术爬取数据,MySQL数据库持久化存储数据和最新的SpringBoot框架进行项目构建,并结合SpringMVC等热门框架技术,向读者推荐当前比较热门的小说,相似度高的同主题小说,帮组读者能够更好、更快的选择适合自己的小说。

        在爬取晋江小说文学网站的小说数据时,我对不同主题的小说进行了判断和分类,经过简单的数据处理后,将数据持久化存储在MySQL数据库中。由于SpringBoot技术为用户提供了自动装配功能,只需要遵守约定就可以减少甚至不需要再进行繁琐的配置。相较于Spring,SpringBoot提供的自动装配节约了我们大量的开发时间,提高了开发效率。结合SpringMVC框架,我将项目主要分为模型model(javabean)、视图view(jsp/img)、控制器Controller(Action/servlet),大大降低了耦合,让代码合理分层,方便后期维护。

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

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

相关文章

JavaSE3(4/26)

目录 1.线程的状态 2.线程安全问题 3.synchronized的具体用法 4. 1.线程的状态 首先明白进程的状态:就绪或者阻塞 上述说的就绪和阻塞其实是针对系统中的线程状态(PCB) Java中对于Thread类中的线程的状态进行了进一步的细化 NEW: Thread对象有了,但是线程还没有被执行 TERMI…

RabbitMQ之介绍以及安装

1.1 MQ的相关概念 1.1.1 什么是MQ ​ MQ,从字面意思上看,本质是个队列,FIFO先入先出,只不过队列中存放的内容是message而已,还是一种跨进程的通信机制,用于上下游传递消息。在互联网架构中,MQ…

摄影tips

一、基础知识 相机挡位 A档就是全自动模式或称场景智能自动模式,该拍摄模式下,相机会根据光线和你所拍摄的对象等场景环境自行设置快门、光圈等参数,你不需要调整任何参数,拿起相机对焦按快门就行,也就是AUTO模式。虽…

opengauss编译和使用oracle_fdw

opengauss虽然继承自postgresql9.2,但由于做了魔改,网上通用的从oracle_fdw源码编译安装到postgresql的方法,是否成功的应用到opengauss,并不一定,今天试了一下,参照opengauss官网文档(其实写的…

Spring Bean的作用域及生命周期

目录 前言: Bean的作用域(Scope) 单例模式 原型模式(多例作用域) 请求作用域(request) 会话作用域 全局作用域 网络长连接 Spring执行流程 Bean的生命周期 测试 小结: 前…

多模态论文串讲:ALBEF VLMo BLIP CoCa Beit V3

文章目录 前言ALBEF:Align before Fuse: Vision and Language Representation Learning with Momentum Distillation(2021-10)VLMO: Unified Vision-Language Pre-Training with Mixture-of-Modality-Experts(2021-11)relatedmethod BLIP:Bootstrapping Language-Im…

【贴片SD Card介绍】贴片SD Card (LEILONG雷龙科技)

有幸申请到了雷龙科技代理的 贴片 SD Card (SD NAND) 样品,做出测试,分享一下。 型号:CSNP32GCR01-BOW;CSNP4GCR01-BOW 生产方:CS创世半导体 由于是第一次使用贴片类型的 SD Card ,可能文章会有较多疏忽。…

【Git】Windows Git和TortoiseGit安装教程(Git2.23.0、TortoiseGit2.8.0、语言包2.8.0)

介绍 这里是小编成长之路的历程,也是小编的学习之路。希望和各位大佬们一起成长! 以下为小编最喜欢的两句话: 要有最朴素的生活和最遥远的梦想,即使明天天寒地冻,山高水远,路远马亡。 一个人为什么要努力&a…

eletron+react+antd+node开发桌面小程序并打包(electron-packager+electron-builder)

首先罗列一下项目中用到的技术: electron, react,antd, typescript, node,及打包命令:pkg,electron-packager,electron-builder及child_process实现多进程 需求:开发一个桌面应用,左…

前端架构师-week3-脚手架执行准备过程实现

目录​​​​​​​​​​​​​​ 脚手架框架代码拆包 import-local应用 检查版本号功能开发(require加载资源类型讲解 npmlog封装) 最低Node版本检查功能开发 root 账号启动检查和自动降级功能开发 用户主目录检查功能开发 入参检查和 debug…

华为OD机试真题(Java),火星文计算(100%通过+复盘思路)

一、题目描述 已知火星人使用的运算符为#、$,其与地球人的等价公式如下: x#y 2*x3*y4 x$y 3*xy2 其中x、y是无符号整数;地球人公式按C语言规则计算;火星人公式中,$的优先级高于#,相同的运算符&#x…

数字船厂信息化整体解决方案(ppt可编辑)

本资料来源公开网络,仅供个人学习,请勿商用,如有侵权请联系删除 数字船厂建设思路 智慧船厂将以信息化为基础、以数据为纽带、以制造为核心、以管理为载体打造新型智慧园区,该智慧园区整合了船厂的安全、环保、能源、安防、应急…

基于 JavaWeb 的用户报名审核平台项目

目录 一、项目的需求: 二、项目的思路流程: 三、项目的框架(基于JavaWeb): 四、项目的详细搭建 1、数据库--建库建表 2、JavaBean编写(以Status.java为例) 3、Dao层(StatusDao…

Linux系统与shell编程第一节课

目录 1.1 Linux发展历史 1.2 什么是linux? 1.3 Linux的发行版 Host-Only(仅主机模式) windows开发 linux服务 区块链, 特点:稳定,安全,可移植性,低资源消耗,开源软…

做工业品行业的财务有多难

财务 做工业品行业的财务需要具备一定的财务和会计知识,以及对行业内经济运作有一定的了解。在处理大量数据和信息方面也需要有较高的能力。此外,工业品行业往往涉及到复杂的生产过程和供应链管理,需要对这些方面有一定的了解和掌握。因此&a…

数据结构初阶(栈和队列)

文章目录 一、栈1.1 什么是栈1.2 栈的使用(1)底层代码(2)方法(3)栈的应用 二、队列2.1 什么是队列2.2 队列的使用(1)底层代码的实现(2)队列的使用 2.3 双端队…

字节跳动发放年终奖,远超预期~

最近一段时间,国内互联网大厂接连公布年终奖情况,整个后厂村都洋溢在春节般的喜庆气氛里。 虽然由于各种各样的顾虑(主要是人员流失问题),大部分公司都将年终奖发放时间调整到了年中,但好饭不怕晚&#xf…

06_Callable接口

Thread类、Runnable接口使得多线程编程简单直接。 但Thread类和Runnable接口都不允许声明检查型异常,也不能定义返回值。没有返回值这点稍微有点麻烦。不能声明抛出检查型异常则更麻烦一些。 public void run()方法规范意味着你必须捕获并处理检查型异常。即使你小…

磁盘被格式化了能找到资料吗?资料找到的具体方法

磁盘格式化了还能找到,用读卡器接到电脑,就可以作为可移动磁盘来找到资料。下面讲下磁盘被格式化了能找到资料吗?资料找到的具体方法 磁盘被格式化了能找到资料吗?资料找到的具体方法 工具/软件:sayRecy 步骤1&#xf…

博世中国创新软件开发中心 BCSC

Bosch China Innovation and Software Development Campus 博世中国创新软件开发中心 BCSC 擎软件! 拓未来!Bosch China Innovation and Software Development Campus——IntroductionBOSCH——Our AdvantagesBOSCH——Hotly recruited positions Welcom…