django网络爬虫系统- 计算机毕业设计源码81040

news2024/11/16 10:56:57

摘要

本论文主要论述了如何开发一个网络爬虫系统,对旅游景点信息进行爬取,本系统将严格按照软件开发流程进行各个阶段的工作,面向对象编程思想进行项目开发。在引言中,作者将论述网络爬虫系统的当前背景以及系统开发的目的,后续章节将严格按照软件开发流程,对系统进行各个阶段分析设计。

网络爬虫系统的主要使用者分为管理员和普通用户,实现功能包括管理员:系统用户、景点分类管理、景点信息管理、景点数据管理、系统管理、公告信息管理、资源管理模块,普通用户:首页、公告信息、旅游资讯、景点信息、景点数据、我的账户、个人中心等功能。由于本网站的功能模块设计比较全面,所以使得整个网络爬虫系统信息管理的过程得以实现。

本网络爬虫系统是以Django这一框架为基础,采用Python的编程语言,使用了MySQL这一数据库进行开发的,可以实现本网络爬虫系统管理的信息化,让用户更加直接的了解旅游景点展示,也方便管理员进行更加方便快捷的进行数据管理。

关键词:网络爬虫系统;Python语言;Django;景点数据

Abstract

This paper mainly discusses how to develop a web crawler system to crawl tourist attraction information. The system will strictly follow the software development process for each stage of work, and the object-oriented programming concept will be used for project development. In the introduction, the author will discuss the current background of web crawler systems and the purpose of system development. Subsequent chapters will strictly follow the software development process to analyze and design the system at each stage.

The main users of the web crawler system are divided into administrators and ordinary users. The implementation functions include administrators: system users, scenic spot classification management, scenic spot information management, scenic spot data management, system management, announcement information management, and resource management modules. Ordinary users: homepage, announcement information, travel information, scenic spot information, scenic spot data, my account, personal center, and other functions. Due to the comprehensive design of the functional modules on this website, the entire process of information management in the web crawler system can be achieved.

This web crawler system is based on the Django framework, developed using Python programming language and MySQL database. It can achieve information management of this web crawler system, allowing users to directly understand the display of tourist attractions and facilitating managers to manage data more conveniently and quickly.

Keywords: Web crawler system; Python language; Django; Attraction data

目录

摘要

Abstract

第 1 章 引  言

1.1 选题背景

1.2 研究目的和意义

1.3 研究现状

1.4 主要研究内容

1.5 论文结构安排

第 2 章 相关理论和技术

2.1 B/S体系结构介绍

2.2 Django框架介绍

2.3 MySQL数据库

2.4 Python语言

第 3 章 网络爬虫系统的需求分析

3.1 系统可行性分析

3.1.1 技术可行性分析

3.1.2 经济可行性分析

3.1.3 操作可行性分析

3.2 系统需求分析

3.2.1 功能需求分析

3.2.2 功能需求分析

3.3 系统用例分析

3.4 系统流程分析

3.4.1 数据增加流程

3.4.2 数据修改流程

3.4.3 数据删除流程

3.5 本章小节

第 4 章 网络爬虫系统总体设计

4.1 系统架构设计

4.2 系统功能模块设计

4.3 数据库设计

4.3.1 数据库概念结构设计

4.3.2 数据库逻辑结构设计

4.4 本章小结

第 5 章 关键模块的设计与实现

5.1 前台首页模块

5.2 登录模块

5.3 注册模块

5.4 公告信息模块

5.5 旅游资讯模块

5.6 景点信息模块

5.7 景点数据管理模块

5.8 系统用户管理模块

5.9 景点分类管理模块

5.10 系统管理模块

5.11 资源管理模块

第 6 章 系统测试

6.1 测试的目的

6.2 系统部分测试

6.3 系统测试结果

第 7 章 结论

参考文献

致谢

  • 1 章 引  言
    1. 选题背景

随着互联网的快速发展和社会经济的进步,旅游业已成为全球最重要的产业之一,人们获取旅游信息的渠道也在逐渐多样化。而在互联网上,关于旅游景点的信息呈现出蓬勃发展的态势,这意味着用户可以通过网络获取大量的旅游信息。旅游者在规划旅行时往往需要收集大量的旅游景点信息,包括景点数据、交通指南、门票价格、游览路线等。

然而,这些信息往往分散在各个旅游网站和社交媒体平台上,造成旅游者在查找和比较信息时消耗大量的时间和精力。因此,构建一个关于旅游景点数据的网络爬虫系统,可以有效地从网络上自动化地收集、整合和更新旅游景点信息,为旅游者提供更便捷、准确的信息检索服务。因此,研究关于旅游景点信息的网络爬虫系统具有重要的现实意义。

    1. 研究目的和意义

本研究旨在设计和实现一个关于旅游景点信息的网络爬虫系统,通过自动地抓取各大旅游网站和社交媒体平台上的旅游景点信息,构建一个包含丰富、全面的旅游景点数据库,为旅游者提供更加便捷的信息检索服务。具体研究目的包括:

(1)实现对各大旅游网站和平台上的景点信息进行全面、自动化的抓取与整合,包括景点数据、景点评分、攻略数量、评论数量、驴友占比、门票价格等。

(2)提供用户友好的搜索接口,使用户可以方便地查找特定景点的相关信息,并实现对比和筛选功能。

(3)利用爬取的数据,进行景点热度分析、旅游趋势预测等,并为旅游从业者和游客提供有益的参考依据。

(4)为旅游相关研究提供丰富的数据支持,并为旅游业的发展和规划提供参考意见。

该研究对于提升旅游信息的获取和利用效率,促进旅游行业的发展,提升旅游者的满意度具有重要的实际意义和社会意义。同时,关于旅游景点信息的网络爬虫系统的研究也将为相关领域的学术研究提供新的思路和方法。

    1. 研究现状

国内外对于旅游景点信息的网络爬虫系统的研究主要集中在以下几个方面:

(1)旅游景点信息爬取技术:国内外研究者在旅游景点信息的网络爬虫系统中,针对不同网站的结构和内容特点,提出了不同的爬取技术,包括基于规则的爬取、基于机器学习的内容识别、动态页面爬取技术等。

(2)旅游景点信息的数据处理和挖掘:部分研究关注如何从爬取的旅游景点信息中提取有用的信息,包括景点数据、图片、评论等,并利用数据挖掘技术进行信息的整合和分析,以提供更为全面和准确的旅游信息。

(3)旅游景点信息的可视化与展示:另一些研究致力于利用爬取的旅游景点信息,通过可视化技术或地图展示技术将这些信息直观地展现给用户,以提高用户的浏览体验和搜索效率。

(4)旅游景点信息的更新与维护:一些研究者关注旅游景点信息的更新与维护问题,提出了自动化的信息更新策略和机制,保证爬取的旅游景点信息的准确性和实效性。

总体来说,国内外研究者在旅游景点信息的网络爬虫系统方面已取得了一定的进展,但仍存在着一些问题和挑战,如网站反爬虫机制、数据的准确性和实时性等。因此,如何提高爬取效率、数据质量和用户体验仍是当前研究的重点。

    1. 主要研究内容

(1)文献综述:梳理旅游信息抓取、网络爬虫技术、大数据处理与存储相关领域的文献,明确当前研究状况与存在问题。

(2)网络爬虫技术:研究各种网络爬虫技术,包括但不限于基于规则、基于机器学习的爬虫技术,以及如何利用代理、IP池等来应对反爬策略。

(3)数据处理与存储:探索如何处理和存储抓取到的大规模旅游景点信息数据,包括数据清洗、去重、数据挖掘等技术方法,以及如何利用大数据存储与分析技术进行高效管理和查询。

(4)用户界面设计:研究如何设计一个用户友好的界面,使得用户可以方便地检索、浏览、标记和分享抓取到的旅游景点信息。

(5)系统测试与评估:对开发的系统进行功能测试和性能评估,不断优化系统的稳定性和用户体验。

    1. 论文结构安排

第一章:绪论

本章主要介绍研究背景、目的意义和研究现状。首先,描述了网络爬虫系统的背景和相关领域的需求。然后,阐述了研究该系统的重要性和潜在价值。最后,回顾了已有的相关研究和系统,并指出本文的主要研究内容和论文安排。

第二章:开发技术与工具

本章详细介绍了网络爬虫系统所采用的开发技术和开发工具。包括数据库选择、编程语言选择、B/S结构等。还对这些技术和工具的优势和适用性进行了分析和比较。

第三章:系统分析

本章对网络爬虫系统进行了系统分析。首先,描述了系统的总体需求和功能描述,明确了系统需要实现的主要功能和特点。然后,从功能性角度和非功能性角度分析了系统需求,并评估了系统的可行性和可实现性。

第四章:系统设计

本章是文章的重要部分,详细介绍了网络爬虫系统的系统架构和各个主要功能模块的设计。包括系统架构图、数据库设计、用户界面设计等。每个功能模块都有相应的设计说明和流程图,确保系统的逻辑和功能完整性。

第五章:系统实现

本章描述了网络爬虫系统的具体实现过程。详细介绍了各个模块的具体实现方法和技术细节。同时,给出了相关代码片段和界面截图,以便读者更好地理解系统的实现过程。

第六章:测试与运行

本章对网络爬虫系统进行了全面的测试和运行。首先,设计了一系列测试用例,并对系统进行了功能性和性能方面的测试。然后,详细记录了测试结果,并分析了系统的稳定性和可靠性。

第七章:总结与展望

最后一章对整个研究工作进行了总结,并对未来的发展提出了展望。总结部分回顾了系统的设计和实现过程,并强调了所取得的成果和创新之处。展望部分则提出了进一步改进和扩展系统的建议,并展示了未来可能的研究方向和发展前景。

B/S体系,即Browser/Server体系,是一种常见的网络应用程序架构。其工作原理基于客户端与服务器之间的请求-响应模型。用户通过浏览器向服务器发送请求,服务器接收到请求后进行处理,并生成相应的响应结果,最终将响应返回给客户端。浏览器接收到服务器返回的响应后,解析其中的标记语言(如HTML),并根据CSS样式表和JavaScript脚本来渲染页面,呈现给用户。用户可以与页面进行交互,例如点击链接、填写表单等操作,这些操作会触发新的请求,循环执行上述过程。

B/S体系具有许多优点,包括跨平台性、易于维护和升级、减少客户端依赖等。它成为了现代Web应用程序开发的主流架构,广泛应用于各种互联网服务和企业级应用系统中。通过B/S体系,用户可以通过简单的浏览器访问各种在线服务和资源,无需安装额外的软件,提供了更便捷、灵活的使用体验。同时,服务器端的集中管理和维护,使得系统的升级和更新更加高效和便捷。总之,B/S体系的工作原理为我们提供了一个稳定、可靠且高效的网络应用程序架构,为用户提供了便捷的互联网服务。

    1. Django框架介绍

Django是一个使用Python语言开发的Web应用程序框架。它提供了一种简单而强大的方式来构建复杂的网站和应用程序。通过使用Django,开发人员可以更轻松地处理数据库、创建用户界面和处理用户请求。它还提供了一个自动生成管理界面的功能,使得管理后台数据变得更加简单。Django还具有强大的安全功能,可以保护网站免受常见的网络攻击。总之,Django是一个非常实用和易于学习的框架,适用于各种规模的Web项目。无论你是初学者还是经验丰富的开发人员,都可以从Django的便利性和灵活性中受益。

    1. MySQL数据库

MySQL是一种广泛使用的开源关系型数据库管理系统。它具有高性能、可靠性和可扩展性等优点,被广泛应用于Web应用程序和大型企业级系统中。MySQL的核心特性包括关系型数据库管理系统的基本概念、数据模型和类型、SQL语言支持、事务处理和并发控制,以及安全性和权限管理。其架构由连接管理器、查询解析器和优化器、存储引擎、日志系统和恢复机制等组件构成。MySQL在实际应用中的优势体现在高性能、可伸缩性、可靠性、灵活性和易用性等方面。然而,MySQL也面临着一些局限性和挑战,如大规模数据处理的限制、复杂查询和性能优化、高并发和负载均衡,以及安全性和数据保护等方面。为了最大化MySQL的性能和效益,最佳实践和性能优化建议涉及数据库设计和规范化、索引设计和查询优化、缓存和分区技术,以及负载测试和容量规划等方面。总之,通过深入研究MySQL的描述,我们可以更好地理解其工作原理和适用场景,并为数据库开发人员和管理员提供有价值的参考。

    1. Python语言

Python是一种简洁易读、跨平台且功能强大的编程语言。它拥有庞大而活跃的社区,提供了丰富的第三方库和框架,如NumPy、Pandas和Django,使开发人员能够快速构建各种应用程序。Python在数据处理和科学计算方面表现出色,通过相关库和工具,可以进行数据分析、机器学习和科学计算等任务。此外,Python广泛应用于Web开发、自动化脚本、网络爬虫等领域,其多样性使其成为一个全能的编程语言。无论你是初学者还是有经验的开发者,Python的简单语法、跨平台性以及强大的社区支持都能为你提供高效、优雅和可靠的编程体验。总之,Python是一个强大而灵活的编程语言,深受开发人员喜爱,并在各个领域得到广泛应用。

  • 3 章 网络爬虫系统的需求分析
    1. 系统可行性分析

在软件开发的过程中,可行性分析是至关重要的,它旨在评估问题的可行性,以便尽可能快地解决,同时也要考虑到不同的解决方案的优势和劣势,以及实施这些方案所带来的经济效益。通过对网络爬虫系统的可行性分析,我们可以从技术、经济操作三个方面来评估其可行性,从而为其提供有效的支持和保障。

      1. 技术可行性分析

在技术可行性方面,我们选择使用Python作为开发语言,结合相应的库和框架,如Django和Pandas,以实现系统的功能需求。Python作为一种简洁而强大的编程语言,具有丰富的库支持和成熟的开发社区,可以满足网络爬虫系统的开发需求。Django作为Python的Web框架,提供了高度可扩展的开发环境,使得系统的设计和实现更加便捷和高效。同时,通过使用Pandas库进行数据处理和分析,系统能够提供更全面的景点数据管理和报表功能

      1. 经济可行性分析

在开发网络爬虫系统并不需要投入太多,开发工具、服务器、数据库等,都可以通过网络搜索、下载、安装,只需要一台普通的计算机就可以完成操作,而且在系统功能规划上通过走访调查目前用户对网络爬虫系统的需求,了解它们对系统具体实现的功能需求,然后进行设计开发,不存在任何开销,因此系统的开发在经济方面是可行的

      1. 操作可行性分析

在操作可行性方面,网络爬虫系统将采用直观友好的用户界面和简单易懂的操作流程,降低用户学习成本并提高用户满意度。系统将支持多种操作,如、景点分类管理、景点信息管理、景点数据管理和报表生成等,以满足用户的各种需求。同时,系统将实现数据的安全性和权限控制,确保只有授权人员可以访问敏感信息,提升系统的安全性和可靠性

    1. 系统需求分析
      1. 功能需求分析

网络爬虫系统的开发目的很简单,就是旨在开发一个基于网络爬虫技术的旅游景点信息抓取系统,能够实现自动从多个来源网站抓取景点信息,并进行数据处理与存储,提出一套高效可行的数据处理与存储方案,使得用户可以方便地检索、浏览、标记和分享抓取到的旅游景点信息。系统在功能上分为用户端和管理员端部分。

前台用户端:

(1)用户注册:注册页面输入账号、设置密码、确认密码、昵称、邮箱、选择身份、用户姓名、用户性别、联系电话等信息,点击“立即注册”,注册成功会提示“注册成功”。注册成功后回到首页。

(2)用户登录:点击登录,登录时前端会自动校验输用户名、密码,输入正确登录成功,输入错误会有对应提示信息。

(3)公告信息:用户点击“公告信息”以后,系统当中所有的公告信息都会展示出来,如果想要了解某一公告信息的详细信息,点击后面的“详情”会进入详情界面。

(4)旅游资讯:用户点击“旅游资讯”可以搜索查看资讯信息,并可对资讯信息进行点赞、收藏和发表评论等操作。

5景点信息:点击菜单栏“景点信息”就会显示出所有的景点信息,可以根据搜索景点名称查看景点详细信息包括景点名称、景点类型、景点门票、景点地址、推荐指数、游玩时长、开放时间、景点设施、景点数据、景点详情等,可对景点信息进行点赞、收藏和发表评论等操作。

(6)景点数据:用户可以查看景点数据的所有信息,包括景点中文名、景点英文名、景点排名、景点评分、攻略数量、评论数量、驴友占比、景点描述、景点详情等。支持通过搜索关键词的方式对景点数据进行查询,在查询到自己想要了解的景点数据的时候,可以进入查看详细的介绍,在景点数据详情这个界面,同时支持用户对喜欢的景点数据进行收藏、点赞以及评论的功能。

(7)我的账户:可以修改个人信息资料以及修改密码。

(8)个人中心:用户点击右上角的“用户名”,然后点击“个人中心”便可查看或删除个人收藏信息。

管理员端:

(1)个人资料:对个人的基本信息以及对自己账号登录的密码进行修改。

(2)系统用户:在系统用户管理模块中主要分了两部分,分别是管理员和普通用户,如果需要添加新的用户,点击页面中的“添加”按钮根据提示输入上用户信息,点击“提交”以后在对应的用户界面就可以查看到了,可以点击用户后面的“删除”按钮直接删除某一用户。

(3)景点分类管理:点击“景点分类管理”系统会把网络爬虫系统当中所有的景点分类信息都显示出来,管理员可进行添加景点分类描述管理,并可进行查询、重置或删除等相应操作。

(4)景点信息管理:点击“景点信息列表”这个按钮可以查看到系统中所有发布的景点信息,管理员可进行详情查看、添加或删除等相应操作。也可以管控用户发布的评论信息。

(5)景点数据管理:点击“景点数据列表”这个按钮可以查看到系统中所有的景点数据信息,管理员可进行查询、重置或删除等相应操作。如果需要添加新的景点数据信息,管理员可以输入爬虫的城市,点击“爬取”按钮,就可以爬取对应城市的景点数据,每次可以爬取10条数据。

(6)系统管理:主要是轮播图管理,可进行查询、删除、添加,查看详情等操作,添加的轮播图在前台首页展示。

(7)公告信息管理:可进行查询、重置、删除、添加,查看详情等操作,添加的公告信息在前台首页展示。

(8)资源管理:主要是对系统展示的旅游资讯以及资讯分类进行增删改查等操作。

      1. 非功能需求分析

 非功能性分析旨在评估网络爬虫系统的非功能需求和性能要求。通过对性能、可靠性、安全性、可用性和扩展性等方面进行评估,确保平台能够满足用户和系统运行的要求。具体如下3-1表格中:

表3-1网络爬虫系统非功能需求表

非功能性要求

说明

性能

评估响应时间、并发用户数、吞吐量等指标,以确保平台稳定高效地运行。

可靠性

评估系统的稳定性、容错能力和数据完整性,保障系统在故障情况下正常运行。

安全性

评估用户身份认证、数据加密和访问控制等,保护用户信息和交易的安全。

可用性

评估系统的稳定性、故障处理能力和用户界面友好性,提供良好的用户体验。

扩展性

评估系统的可扩展性和灵活性,以便根据需求进行功能扩展和升级。

    1. 系统用例分析

系统用例分析是对网络爬虫系统中各个功能模块的用户需求和行为进行分析,以识别和描述不同的用户用例。通过系统用例分析,可以深入了解用户在平台上的操作流程和交互方式,为系统设计和开发提供指导,并确保平台能够满足用户的需求和期望。

网络爬虫系统中用户角色用例图如图3-1所示:

图3-1 用户角色用例图

网络爬虫系统中管理员角色用例图如图3-2所示:

图3-2管理员角色用例图

    1. 系统流程分析

业务流程是用一些特定的符合和线条来进行演示用户在使用系统时的过程,在进行系统分析的时候,业务流程可以帮助开发人员更好的理解业务,发现错误,完善系统。

      1. 数据增加流程

用户登录系统后,选择要添加的信息类型,填写相应的信息表单并提交。系统对信息进行处理,并给予用户反馈结果。用户可以根据需要返回上级页面或继续操作。图3-3就是数据删除时的流程图。

图3-3 数据增加流程图

      1. 数据修改流程

数据修改时的流程和上面介绍的数据增加时的流程差不多,如图3-4所示。

图3-4  数据修改流程图

      1. 数据删除流程

用户登录系统后,导航至相应的信息管理功能入口。选择要删除的信息,并确认删除操作。系统进行删除处理,并给予用户反馈结果。用户可以根据需要返回上级页面或继续操作。图3-5就是数据删除时的流程图。

图3-5 数据删除流程图

    1. 本章小节

本章主要通过对网络爬虫系统的可行性分析、功能需求分析、系统用例分析和系统流程分析,确定了该系统所需实现的功能。这些分析结果为网络爬虫系统的代码实现和测试提供了标准和指导。可行性分析考虑了技术、经济和操作的可行性,确保系统的实施可行;功能需求分析明确了系统需要实现的功能模块和具体要求;系统用例分析细化了系统功能,并定义了参与者、前置条件和基本流程;系统流程分析详细揭示了系统的运行流程和数据流动路径。这些分析结果为开发团队提供了明确的目标和指导,可以根据需求逐步实现各个功能模块,并在测试阶段验证系统是否满足预期要求。同时,分析结果也为未来的系统扩展和升级提供了基础和参考依据。

在系统架构设计中,我们将确定系统的整体结构和组件之间的关系。这包括选择适当的架构风格,划分系统的层次结构,并定义各个模块的职责和交互方式。架构图如下图4-1所示。

图4-1网络爬虫系统架构设计图

表现层(Presentation Layer):负责与用户进行交互,将系统的功能和数据以易于理解和操作的方式展示给用户。通常包括用户界面、页面设计和用户输入验证等。

业务逻辑层(Business Logic Layer):处理系统的核心业务逻辑,包括对用户请求的处理、业务规则的执行以及数据的处理和转换。它独立于表现层和数据层,实现了业务逻辑的封装和复用。

数据层(Data Layer):负责数据的存储、访问和管理,包括数据库和持久化机制。数据层提供了对数据的增删改查操作,并与业务逻辑层进行交互,使系统能够有效地存储和检索数据。

这三个层次相互独立,通过明确的接口和协议进行通信,实现了系统的模块化和可扩展性。表现层负责将用户的请求传递给业务逻辑层,业务逻辑层处理请求并返回结果,最后数据层负责与数据库交互并提供数据支持。这种分层架构有助于实现系统的可维护性、灵活性和可测试性。

    1. 系统功能模块设计

通过整体功能模块设计,我们将根据需求分析的结果,将系统的功能划分为不同的模块。每个模块负责实现特定的功能,并与其他模块进行协作。我们将详细定义每个模块的输入、输出、处理逻辑和相互依赖关系。具体的功能模块图如图4-2所示。

图4-2 网络爬虫系统功能模块图

    1. 数据库设计

数据库设计是系统开发中至关重要的一环,它涉及到数据的组织、存储和管理。在数据库设计中,我们将根据系统的需求设计数据库的概念结构和逻辑结构,包括定义实体、属性、关系和约束等。

      1. 数据库概念结构设计

数据库概念结构设计主要涉及数据库的实体和实体之间的关系。通过实体-关系模型或者其他适当的模型,我们将定义系统中涉及的各个实体以及它们之间的联系。下面是整个网络爬虫系统中主要的数据库表总E-R实体关系图。

图4-3网络爬虫系统总E-R关系图

      1. 数据库逻辑结构设计

数据库逻辑结构设计则是在概念结构的基础上,进行具体的数据库表设计。我们将定义每个表的结构、字段和约束,并建立表与表之间的关系。具体如下: 

表access_token (登陆访问时长)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

token_id

int

10

0

N

Y

临时访问牌ID

2

token

varchar

64

0

Y

N

临时访问牌

3

info

text

65535

0

Y

N

4

maxage

int

10

0

N

N

2

最大寿命:默认2小时

5

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

6

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

7

user_id

int

10

0

N

N

0

用户编号:

表article (文章:用于内容管理系统的文章)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

article_id

mediumint

8

0

N

Y

文章id:[0,8388607]

2

title

varchar

125

0

N

Y

标题:[0,125]用于文章和html的title标签中

3

type

varchar

64

0

N

N

0

文章分类:[0,1000]用来搜索指定类型的文章

4

hits

int

10

0

N

N

0

点击数:[0,1000000000]访问这篇文章的人次

5

praise_len

int

10

0

N

N

0

点赞数

6

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

7

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

8

source

varchar

255

0

Y

N

来源:[0,255]文章的出处

9

url

varchar

255

0

Y

N

来源地址:[0,255]用于跳转到发布该文章的网站

10

tag

varchar

255

0

Y

N

标签:[0,255]用于标注文章所属相关内容,多个标签用空格隔开

11

content

longtext

2147483647

0

Y

N

正文:文章的主体内容

12

img

varchar

255

0

Y

N

封面图

13

description

text

65535

0

Y

N

文章描述

表article_type (文章分类)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

type_id

smallint

5

0

N

Y

分类ID:[0,10000]

2

display

smallint

5

0

N

N

100

显示顺序:[0,1000]决定分类显示的先后顺序

3

name

varchar

16

0

N

N

分类名称:[2,16]

4

father_id

smallint

5

0

N

N

0

上级分类ID:[0,32767]

5

description

varchar

255

0

Y

N

描述:[0,255]描述该分类的作用

6

icon

text

65535

0

Y

N

分类图标:

7

url

varchar

255

0

Y

N

外链地址:[0,255]如果该分类是跳转到其他网站的情况下,就在该URL上设置

8

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

9

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

表attraction_data (景点数据)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

attraction_data_id

int

10

0

N

Y

景点数据ID

2

chinese_names_of_tourist_attractions

text

65535

0

Y

N

景点中文名

3

english_names_of_tourist_attractions

text

65535

0

Y

N

景点英文名

4

scenic_spot_ranking

text

65535

0

Y

N

景点排名

5

scenic_spot_rating

text

65535

0

Y

N

景点评分

6

scenic_spot_pictures

varchar

255

0

Y

N

景点图片

7

strategy_quantity

text

65535

0

Y

N

攻略数量

8

number_of_comments

text

65535

0

Y

N

评论数量

9

the_proportion_of_donkey_friends

text

65535

0

Y

N

驴友占比

10

description_of_attractions

text

65535

0

Y

N

景点描述

11

attraction_details

varchar

255

0

Y

N

景点详情

12

hits

int

10

0

N

N

0

点击数

13

praise_len

int

10

0

N

N

0

点赞数

14

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

15

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表attraction_information (景点信息)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

attraction_information_id

int

10

0

N

Y

景点信息ID

2

attraction_name

varchar

64

0

Y

N

景点名称

3

types_of_attractions

varchar

64

0

Y

N

景点类型

4

attraction_tickets

varchar

64

0

Y

N

景点门票

5

scenic_spot_pictures

varchar

255

0

Y

N

景点图片

6

attraction_address

varchar

64

0

Y

N

景点地址

7

recommendation_index

varchar

64

0

Y

N

推荐指数

8

duration_of_play

varchar

64

0

Y

N

游玩时长

9

opening_hours

varchar

64

0

Y

N

开放时间

10

scenic_facilities

text

65535

0

Y

N

景点设施

11

introduction_to_scenic_spots

text

65535

0

Y

N

景点介绍

12

attraction_details

longtext

2147483647

0

Y

N

景点详情

13

hits

int

10

0

N

N

0

点击数

14

praise_len

int

10

0

N

N

0

点赞数

15

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

16

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表auth (用户权限管理)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

auth_id

int

10

0

N

Y

授权ID:

2

user_group

varchar

64

0

Y

N

用户组:

3

mod_name

varchar

64

0

Y

N

模块名:

4

table_name

varchar

64

0

Y

N

表名:

5

page_title

varchar

255

0

Y

N

页面标题:

6

path

varchar

255

0

Y

N

路由路径:

7

position

varchar

32

0

Y

N

位置:

8

mode

varchar

32

0

N

N

_blank

跳转方式:

9

add

tinyint

3

0

N

N

1

是否可增加:

10

del

tinyint

3

0

N

N

1

是否可删除:

11

set

tinyint

3

0

N

N

1

是否可修改:

12

get

tinyint

3

0

N

N

1

是否可查看:

13

field_add

text

65535

0

Y

N

添加字段:

14

field_set

text

65535

0

Y

N

修改字段:

15

field_get

text

65535

0

Y

N

查询字段:

16

table_nav_name

varchar

500

0

Y

N

跨表导航名称:

17

table_nav

varchar

500

0

Y

N

跨表导航:

18

option

text

65535

0

Y

N

配置:

19

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

20

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

表classification_of_tourist_attractions (景点分类)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

classification_of_tourist_attractions_id

int

10

0

N

Y

景点分类ID

2

types_of_attractions

varchar

64

0

Y

N

景点类型

3

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

4

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表collect (收藏)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

collect_id

int

10

0

N

Y

收藏ID:

2

user_id

int

10

0

N

N

0

收藏人ID:

3

source_table

varchar

255

0

Y

N

来源表:

4

source_field

varchar

255

0

Y

N

来源字段:

5

source_id

int

10

0

N

N

0

来源ID:

6

title

varchar

255

0

Y

N

标题:

7

img

varchar

255

0

Y

N

封面:

8

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

9

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

表comment (评论)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

comment_id

int

10

0

N

Y

评论ID:

2

user_id

int

10

0

N

N

0

评论人ID:

3

reply_to_id

int

10

0

N

N

0

回复评论ID:空为0

4

content

longtext

2147483647

0

Y

N

内容:

5

nickname

varchar

255

0

Y

N

昵称:

6

avatar

varchar

255

0

Y

N

头像地址:[0,255]

7

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

8

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

9

source_table

varchar

255

0

Y

N

来源表:

10

source_field

varchar

255

0

Y

N

来源字段:

11

source_id

int

10

0

N

N

0

来源ID:

表hits (用户点击)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

hits_id

int

10

0

N

Y

点赞ID:

2

user_id

int

10

0

N

N

0

点赞人:

3

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

4

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

5

source_table

varchar

255

0

Y

N

来源表:

6

source_field

varchar

255

0

Y

N

来源字段:

7

source_id

int

10

0

N

N

0

来源ID:

表notice (公告)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

notice_id

mediumint

8

0

N

Y

公告id:

2

title

varchar

125

0

N

N

标题:

3

content

longtext

2147483647

0

Y

N

正文:

4

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

5

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

表praise (点赞)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

praise_id

int

10

0

N

Y

点赞ID:

2

user_id

int

10

0

N

N

0

点赞人:

3

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

4

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

5

source_table

varchar

255

0

Y

N

来源表:

6

source_field

varchar

255

0

Y

N

来源字段:

7

source_id

int

10

0

N

N

0

来源ID:

8

status

bit

1

0

N

N

1

点赞状态:1为点赞,0已取消

表registered_users (注册用户)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

registered_users_id

int

10

0

N

Y

注册用户ID

2

user_name

varchar

64

0

Y

N

用户姓名

3

user_gender

varchar

64

0

Y

N

用户性别

4

examine_state

varchar

16

0

N

N

已通过

审核状态

5

user_id

int

10

0

N

N

0

用户ID

6

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

7

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表slides (轮播图)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

slides_id

int

10

0

N

Y

轮播图ID:

2

title

varchar

64

0

Y

N

标题:

3

content

varchar

255

0

Y

N

内容:

4

url

varchar

255

0

Y

N

链接:

5

img

varchar

255

0

Y

N

轮播图:

6

hits

int

10

0

N

N

0

点击量:

7

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

8

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

表upload (文件上传)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

upload_id

int

10

0

N

Y

上传ID

2

name

varchar

64

0

Y

N

文件名

3

path

varchar

255

0

Y

N

访问路径

4

file

varchar

255

0

Y

N

文件路径

5

display

varchar

255

0

Y

N

显示顺序

6

father_id

int

10

0

Y

N

0

父级ID

7

dir

varchar

255

0

Y

N

文件夹

8

type

varchar

32

0

Y

N

文件类型

表user (用户账户:用于保存用户登录信息)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

user_id

mediumint

8

0

N

Y

用户ID:[0,8388607]用户获取其他与用户相关的数据

2

state

smallint

5

0

N

N

1

账户状态:[0,10](1可用|2异常|3已冻结|4已注销)

3

user_group

varchar

32

0

Y

N

所在用户组:[0,32767]决定用户身份和权限

4

login_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

上次登录时间:

5

phone

varchar

11

0

Y

N

手机号码:[0,11]用户的手机号码,用于找回密码时或登录时

6

phone_state

smallint

5

0

N

N

0

手机认证:[0,1](0未认证|1审核中|2已认证)

7

username

varchar

16

0

N

N

用户名:[0,16]用户登录时所用的账户名称

8

nickname

varchar

16

0

Y

N

昵称:[0,16]

9

password

varchar

64

0

N

N

密码:[0,32]用户登录所需的密码,由6-16位数字或英文组成

10

email

varchar

64

0

Y

N

邮箱:[0,64]用户的邮箱,用于找回密码时或登录时

11

email_state

smallint

5

0

N

N

0

邮箱认证:[0,1](0未认证|1审核中|2已认证)

12

avatar

varchar

255

0

Y

N

头像地址:[0,255]

13

open_id

varchar

255

0

Y

N

针对获取用户信息字段

14

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

15

vip_level

varchar

255

0

Y

N

会员等级

16

vip_discount

double

11

2

Y

N

0.00

会员折扣

表user_group (用户组:用于用户前端身份和鉴权)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

group_id

mediumint

8

0

N

Y

用户组ID:[0,8388607]

2

display

smallint

5

0

N

N

100

显示顺序:[0,1000]

3

name

varchar

16

0

N

N

名称:[0,16]

4

description

varchar

255

0

Y

N

描述:[0,255]描述该用户组的特点或权限范围

5

source_table

varchar

255

0

Y

N

来源表:

6

source_field

varchar

255

0

Y

N

来源字段:

7

source_id

int

10

0

N

N

0

来源ID:

8

register

smallint

5

0

Y

N

0

注册位置:

9

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

10

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

    1. 本章小结

通过以上的设计工作,我们将为系统的开发提供清晰的指导和规范,确保系统能够按照需求进行开发,并且具备良好的可维护性和扩展性。

前台首页界面是用户访问系统的入口页面,它应该展示平台的主要功能和特色,并提供导航链接以便用户浏览和搜索。首页界面的设计应注重页面的美观性和用户体验,同时也需要考虑页面的加载速度和响应性能。其主界面展示如下图5-1所示。

图5-1后台首页界面图

    1. 登录模块

用户登录界面用于已注册用户进行账号登录,用户需要输入正确的用户名和密码才能成功登录系统。登录界面应对用户的输入进行验证,并提供密码找回或重新注册的选项。界面如下图所示。用户登录流程如图5-2所示,登录界面如下图5-3所示

5-2 用户登录流程

系统登录界面如下图所示。

图5-3登录界面图

用户登录关键代码如下:

 def Login(self, ctx):

        print("===================登录=====================")

        ret = {

            "error": {

                "code": 70000,

                "message": "账户不存在",

            }

        }

        body = ctx.body

        password = md5hash(body["password"]) or ""

        obj = service_select("user").Get_obj(

            {"username": body["username"]}, {"like": False}

        )

        if obj:

            user_group = service_select("user_group").Get_obj({'name': obj['user_group']}, {"like": False})

            if user_group and user_group['source_table'] != '':

                user_obj = service_select(user_group['source_table']).Get_obj({"user_id": obj['user_id']},                                                                       {"like": False})

                if user_obj['examine_state'] == '未通过':

                    ret = {

                        "error": {

                            "code": 70000,

                            "message": "账户未通过审核",

                        }

                    }

                    return ret

                if user_obj['examine_state'] == '未审核':

                    ret = {

                        "error": {

                            "code": 70000,

                            "message": "账户未审核",

                        }

                    }

                    return ret

            if obj["state"] == 1:

                if obj["password"] == password:

                    timeout = timezone.now()

                    timestamp = int(time.mktime(timeout.timetuple())) * 1000

                    token = md5hash(str(obj["user_id"]) + "_" + str(timestamp))

                    ctx.request.session[token] = obj["user_id"]

                    service_select("access_token").Add(

                        {"token": token, "user_id": obj["user_id"]}

                    )

                    obj["token"] = token

                    ret = {

                        "result": {"obj": obj}

                    }

                else:

                    ret = {

                        "error": {

                            "code": 70000,

                            "message": "密码错误",

                        }

                    }

            else:

                ret = {

                    "error": {

                        "code": 70000,

                        "message": "用户账户不可用,请联系管理员",

                    }

                }

        return ctx.response(json.dumps(ret, ensure_ascii=False))

    1. 注册模块

用户注册界面用于新用户进行账号注册,用户需要填写必要的个人信息并选择合适的用户名和密码。注册界面应该进行输入验证和数据格式检查,确保用户提供有效的信息。界面如下图所示。注册流程图如图5-4所示,注册界面展示如下图5-5所示。

5-3注册流程图

图5-4 前台注册界面图

注册关键代码如下:

  def Register(self, ctx):

        print("===================注册=====================")

        userService = service_select("user")

        body = ctx.body

        if "username" not in body and body["username"] == '':

            return ctx.response(json.dumps({

                "error": {

                    "code": 70000,

                    "message": "用户名不能为空",

                }

            }, ensure_ascii=False))

        if "user_group" not in body and body["user_group"] == '':

            return ctx.response(json.dumps({

                "error": {

                    "code": 70000,

                    "message": "用户组不能为空",

                }

            }, ensure_ascii=False))

        if "password" not in body and body["password"] == '':

            return ctx.response(json.dumps({

                "error": {

                    "code": 70000,

                    "message": "密码不能为空",

                }

            }, ensure_ascii=False))

        post_param = body

        post_param['nickname'] = body["nickname"] or ""

        post_param['password'] = md5hash(body["password"])

        obj = userService.Get_obj({"username": post_param['username']}, {"like": False})

        if obj:

            return ctx.response(json.dumps({

                "error": {

                    "code": 70000,

                    "message": "用户名已存在",

                }

            }, ensure_ascii=False))

        ret = {

            "error": {

                "code": 70000,

                "message": "注册失败",

            }

        }

        bl = userService.Add(post_param)

        if bl:

            ret = {

                "result": {

                    "bl": True,

                    "message": "注册成功"

                }

            }

        return ctx.response(json.dumps(ret, ensure_ascii=False))

    1. 公告信息模块

当访客点击网络爬虫系统中导航栏上的“公告信息”后将会进入到该“公告信息”列表的界面,然后选择想要看的公告信息,点击进入到详细界面。公告信息列表展示界面如下图所示。

图5-5公告信息界面图

    1. 旅游资讯模块

用户点击“旅游资讯”可以搜索查看资讯信息,并可对资讯信息进行点赞、收藏和发表评论等操作。旅游资讯详情界面如下图5-6所示。

图5-6旅游资讯界面图

    1. 景点信息模块

景点信息模块的实现是指在网络爬虫系统中,提供一个功能来管理和展示景点相关的信息。用户可以通过该模块查看景点的景点名称、景点类型、景点门票、景点地址、推荐指数、游玩时长、开放时间、景点设施、景点介绍、景点详情等详细信息,并进行点赞、收藏、评论景点信息。这个模块的目的是方便用户对景点信息进行有效的浏览。景点信息详情如下图所示。

图5-7景点信息详情界面图

查询景点信息关键代码如下:

def Get_obj(self, ctx):

query = dict(ctx.query)

config_plus = {}

if "field" in query:

field = query.pop("field")

config_plus["field"] = field

obj = self.service.Get_obj(query, obj_update(self.config, config_plus))

if self.service.error:

return {"error": self.service.error}

if obj:

self.interact_obj(ctx, obj)

return {"result": {"obj": obj}}

    1. 景点数据管理模块

用户可以查看景点数据,管理员在后台执行景点数据管理,并可以操作相关内容,如果需要添加新的景点数据信息,管理员可以输入爬虫的城市,点击“爬取”按钮,就可以爬取对应城市的景点数据,每次可以爬取10条数据。

景点数据展示界面如下图5-8所示。

图5-8景点数据展示界面图

景点数据管理界面如下图5-9所示。

图5-9景点数据管理界面图

    1. 系统用户管理模块

用户管理界面用于管理员对用户账号进行管理,包括用户信息的查看、编辑和删除等操作。管理员可以根据需要进行用户权限的控制和账号状态的管理。界面如下图5-10所示。

图5-10系统用户管理界面图

用户管理关键代码如下:

def Get_list(self, ctx):

query = dict(ctx.query)

config_plus = {}

if "field" in query:

field = query.pop("field")

config_plus["field"] = field

if "page" in query:

config_plus["page"] = query.pop("page")

if "size" in query:

config_plus["size"] = query.pop("size")

if "orderby" in query:

config_plus["orderby"] = query.pop("orderby")

if "like" in query:

config_plus["like"] = query.pop("like")

if "groupby" in query:

config_plus["groupby"] = query.pop("groupby")

count = self.service.Count(query)

lst = []

if self.service.error:

return {"error": self.service.error}

elif count:

lst = self.service.Get_list(query,

obj_update(self.config, config_plus))

if self.service.error:

return {"error": self.service.error}

self.interact_list(ctx, lst)

return {"result": {"list": lst, "count": count}}

    1. 景点分类管理模块

管理员在“景点分类管理”一栏可查看景点分类和类型描述等信息,管理员可进行添加、重置或删除等相应操作。景点分类管理界面如下图5-11所示。

图5-11景点分类管理界面图

添加景点分类关键代码如下:

def Add(self, ctx):

body = ctx.body

unique = self.config.get("unique")

obj = None

if unique:

qy = {}

for i in range(len(unique)):

key = unique[i]

qy[key] = body.get(key)

obj = self.service.Get_obj(qy)

if not obj:

error = self.Add_before(ctx)

if error["code"]:

return {"error": error}

error = self.Events("add_before", ctx, None)

if error["code"]:

return {"error": error}

result = self.service.Add(body, self.config)

if self.service.error:

return {"error": self.service.error}

res = self.Add_after(ctx, result)

if res:

result = res

res = self.Events("add_after", ctx, result)

if res:

result = res

return {"result": result}

else:

return {"error": {"code": 10000, "message": "已存在"}}

    1. 系统管理模块

网络爬虫系统中的管理人员在“系统管理”这一菜单下是可以对网络爬虫系统内的轮播图进行添加修改的,其管理界面如下图5-12所示。

图5-12系统管理界面图

    1. 资源管理模块

网络爬虫系统中的管理人员在“资源管理”这一菜单下是可以对系统内的新闻资讯及资讯分类列表进行管理,资源管理界面如下图5-13所示。

图5-13资源管理界面图

测试目的是为了验证系统的功能、性能和稳定性,以确保系统在实际应用中能够达到预期的要求。通过测试,可以发现潜在的问题和缺陷,并及时进行修复和改进。测试还可以评估系统的可靠性、安全性和用户体验,以提供一个高质量和可信赖的产品。此外,测试也有助于验证系统是否满足用户需求和预期,是否符合相应的标准和规范。总之,测试的目的是为了确保系统的质量和可靠性,从而为用户提供良好的使用体验和价值。

    1. 系统部分测试

表6-1用户注册测试用例

测试编号

测试内容

预期结果

TC-001

输入有效信息

注册成功,跳转到登录页面

TC-002

输入已存在账号

显示账号已存在的提示信息

TC-003

输入无效信息

显示注册失败的提示信息,要求重新输入有效信息

表6-2用户登录测试用例

测试编号

测试内容

预期结果

TC-004

输入正确的账号密码

登录成功,跳转到个人主页

TC-005

输入错误的账号密码

显示登录失败的提示信息,要求重新输入正确的账号密码

表6-3 修改密码测试用例

测试编号

测试内容

预期结果

TC-006

输入有效密码

密码修改成功,显示修改成功的提示信息

TC-007

输入无效密码

显示密码无效的提示信息,要求重新输入有效密码

TC-008

输入错误原密码

显示原密码错误的提示信息,要求重新输入正确原密码

表6-4 景点数据测试用例

测试编号

测试内容

预期结果

TC-009

输入有效的景点数据信息

景点数据成功,显示记录成功的提示信息

TC-010

输入无效的景点数据信息

显示记录失败的提示信息,要求重新输入有效信息

表6-5 查看旅游资讯测试用例

测试编号

测试内容

预期结果

TC-014

点击查看旅游资讯

显示旅游资讯页面,展示相关的文章、新闻等内容

TC-015

选择其他分类

显示所选分类下的相关文章、新闻等内容

TC-016

无可用旅游资讯信息

显示暂无旅游资讯的提示信息,提醒用户重新选择分类

    1. 系统测试结果

综上所述,网络爬虫系统在功能测试中表现良好,通过了所有测试用例。系统提供的用户注册、登录、修改密码、景点数据、查看旅游资讯等主要功能都能正常运行,并能够给出预期的提示信息和结果。然而,为了确保系统的全面稳定性和质量,仍建议进行更多的综合性测试,包括性能测试、安全性测试和用户体验测试等,以进一步验证和改进系统的功能和性能。

  • 7 章 结论

本文描述了网络爬虫系统设计与实现的原理和开发过程,在开发本网络爬虫系统之前,首先通过网上查询现有的网络爬虫系统功能、线下通过问卷调查的方式,了解用户对旅游景点方面的具体需求,对系统的开发背景以及推荐系统的研究现状进行研究,设计了本网络爬虫系统具体实现的功能;确定好功能后,第二步就是开发工具的选择,在设计本网络爬虫系统的时候,采用了现下比较流程的Python语言,采用Django框架,数据的存储方面采用的是开源的MySQL数据库,接下来就是对系统需求的分析,在文中主要通过对幼网络爬虫系统进行可行性、性能、功能、用例四个方面进行分析,确定了本网络爬虫系统的具体功能,功能确定后就是对系统的设计以及,包括前后台、数据库等方面,最终完成系统的开发,对系统进行测试总结。

在开发本网络爬虫系统的过程中我成长了很多,学习到了很多书本上没有的知识,目前系统虽然已经完成,但是还有许多地方需要改进,比如界面布局方面,代码的编写方面,都可以进一步完善,由于自己专业知识的浅薄,系统做的并不是十分完美,以后我会不断进行学习,对系统进行完善,希望有机会能够投入到学校的使用当中,给同学们提供便利。

参考文献

[1]Wang Y .Innovative Research on Deep Learning Algorithm in Intelligent Attractions Recommendation Technology[J].Applied Mathematics and Nonlinear Sciences,2024,9(1):

[2]Carlos J P C ,Carmen M D .Correction: Deep learning and Internet of Things for tourist attraction recommendations in smart cities[J].Neural Computing and Applications,2023,36(10):5645-5645.

[3]刘娜.基于偏好数据的旅游景点路线推荐方法[J].信息技术,2023,(11):148-152+157.DOI:10.13274/j.cnki.hdzj.2023.11.025.

[4]Aldayel M ,Nafjan A A ,Nuwaiser A M W , et al.Collaborative Filtering-Based Recommendation Systems for Touristic Businesses, Attractions, and Destinations[J].Electronics,2023,12(19):

[5]赵淑君,刘伟,江凤月.基于大数据技术的网络舆情感知系统的分析与实现[J].南阳理工学院学报,2023,15(04):50-55.DOI:10.16827/j.cnki.41-1404/z.2023.04.010.

[6]曲彤晖.基于蚁群算法的分布式网络爬虫系统研究[J].信息与电脑(理论版),2023,35(12):88-91.

[7]张雁涔.基于网络爬虫技术的企业大数据采集系统设计[J].信息与电脑(理论版),2023,35(12):154-156.

[8]刘多林,吕苗.Scrapy框架下分布式网络爬虫数据采集算法仿真[J].计算机仿真,2023,40(06):504-508.

[9]Zhang S ,Wang L ,Fei R , et al.Attraction Recommendation Based on Tourism Context Modeling and Multi‐neural Collaborative Filtering Algorithm[J].IEEJ Transactions on Electrical and Electronic Engineering,2023,18(8):1280-1295.

[10]班航.基于旅游大数据的用户画像建模及个性化推荐研究[D].安徽工程大学,2023.DOI:10.27763/d.cnki.gahgc.2023.000038.

[11]范路桥,高洁,段班祥.基于Python+Flask+ECharts的国内热门旅游景点数据可视化系统[J].现代电子技术,2023,46(09):126-130.DOI:10.16652/j.issn.1004-373x.2023.09.024.

[12]郭婺,郭建,张劲松,等.基于Python的网络爬虫的设计与实现[J].信息记录材料,2023,24(04):159-162.DOI:10.16009/j.cnki.cn13-1295/tq.2023.04.025.

[13]李坤鹏.基于旅游大数据挖掘的智能景点推荐体系研究[J].旅游与摄影,2023,(01):23-25.

[14]白天瑰.基于网络爬虫技术的大数据采集系统设计[J].电子技术与软件工程,2022,(21):251-254.

[15]赵方骋.大数据背景Python在网络爬虫框架中的应用[J].电子技术与软件工程,2022,(19):13-16.

[16]许洋.基于知识图谱的旅游路线推荐系统[D].内蒙古大学,2022.DOI:10.27224/d.cnki.gnmdu.2022.001162.

[17]原越,范家豪,寇哲,等.旅游景点知识图谱的构建与应用[J].智能计算机与应用,2022,12(05):66-69.

[18]田雪丽,郭志斌,刘梦贤.基于Python的网页数据爬取与可视化分析[J].电脑知识与技术,2022,18(06):24-26.DOI:10.14004/j.cnki.ckt.2022.0312.

[19]贾艳平,翟晋刚.基于Python爬虫技术的游客评论数据可视化分析[J].安阳师范学院学报,2021,(05):51-54.DOI:10.16140/j.cnki.1671-5330.2021.05.013.

[20]史睿瑶.基于协同过滤算法的旅游推荐系统的设计与实现[J].电脑知识与技术,2020,16(35):64-66.DOI:10.14004/j.cnki.ckt.2020.3784.

致谢

在完成本研究工作过程中,我们要向指导老师表示衷心的感谢。感谢老师在选题、需求分析、系统设计和实现等方面给予的细致指导和支持。老师的专业知识和经验对我们的研究工作起到了重要的指导作用。此外,还要感谢师兄师姐和同学们,他们在技术问题上给予了很多帮助和建议。感谢他们的悉心指导和无私分享,使我们能够更好地完成研究工作。最后,要感谢家人和朋友们对我们学业上的理解和支持。感谢他们的鼓励和陪伴,给予了我们坚持下去的动力。

感谢所有为本研究工作做出贡献的人们!你们的支持和帮助使本研究取得了成功。再次向所有相关人员表示衷心的感谢!

免费领取项目源码,请关注❥点赞收藏并私信博主,谢谢~

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

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

相关文章

【计算机网络】TCP/IP四层模型

文章目录 TCP/IP模型应用层(Application Layer)传输层(Transport Layer)网络层(Internet Layer)网络接口层(Network Interface Layer) TCP/IP模型 经典的TCP/IP参考模型从上至下分为…

如何手动修复DLL丢失?directx修复工具收费吗?

在使用电脑时,我们有时会遇到DLL文件丢失或损坏的问题,导致软件无法正常运行。DLL(动态链接库)文件是Windows操作系统中重要的组成部分,用于共享程序代码和资源。本文将介绍如何手动修复DLL丢失问题,手动修…

【优秀python案例】基于Python的豆瓣电影TOP250爬虫与可视化设计与实现

摘要:伴随着当代社会物质水平的不断提高,人们越来越注重精神享受,看电影成为人们日常生活中重要的组成成分。本文将针对豆瓣上热门电影评论进行爬取,应用可视化分析更为形象地了解该电影的动态。该系统可以使得人们实时了解到有关…

WebLogic:CVE-2023-21839[JNDI注入]

原理 1、T3/IIOP协议支持 远程绑定对象 bind到服务端,而且可以通过lookup代码 c.lookup("xxxxxx"); 查看 2、远程对象继承自OpaqueReference并lookup查看远程对象时,服务端会调用远程对象 getReferent 方法 3、由于 weblogic.deployment.…

Java未来还是霸主吗?Java 在当今企业中的未来到底是什么?

Java 及其生态系统对于许多现代企业的成功至关重要。它是一种多功能语言,对许多用例提供强大支持,并具有强大的新功能来应对棘手的情况。但您可能会问自己:Java 的未来是什么? 尽管自 1999 年以来 Java 一直是软件开发领域的关键角…

【C++11】深度解析--异步操作(什么是异步?异步有那些操作?异步操作有什么用呢?)

目录 一、前言 二、什么是异步操作呢? 🔥异步的概念🔥 🔥异步的生活案例说明🔥 三、异步有那些操作呢? 🔥std::future🔥 💢std::future 的概念💢 &a…

SmolLM-HuggingFace发布的高性能小型语言模型

SmolLM是什么? SmolLM是由 Huggingface 最新发布的一系列最先进的小型语言模型,有三种规格:1.35亿、3.6亿和17亿个参数。这些模型建立在 Cosmo-Corpus 上,Cosmo-Corpus 是一个精心策划的高质量训练数据集。Cosmo-Corpus 包括 Cos…

AT24C08系列eeprom总结

内存大小说明:单位(bits(位) AT24C02A,2K bits串行EEPROM:内部组织为256页,每页1字节, AT24C04A,4K bits串行EEPROM:4K内部组织为256页,每页2字节。 AT24C…

拯救丢失数据,这三款数据恢复软件你不可错过

数据丢失真的很烦人,无论是手滑删除了重要文件,还是电脑突然崩溃,那些珍贵的照片、文档、视频,一瞬间就仿佛人间蒸发了一样。但别担心,科技的力量总能给我们带来希望,数据恢复软件就是我们的救星。我用过了…

如何选择开放式耳机?2024五款热门机型推荐!

耳机在我们日常通勤和运动锻炼中扮演着重要的角色,它不仅帮助我们放松和振奋,还提供了随时可得的安慰和动力。选择一款合适的耳机非常关键,开放式耳机因其不挤压耳道的设计,在多种使用场景下都能提供良好的适应性,特别…

本地node搭建web服务器

首先确认自己的电脑已经安装了node.js 1.创建一个node服务文件 创建一个node-serve文件夹,然后在当前文件下输入初始化node项目命令。 npm init然后一直按回车即可,完成之后生成一个 package.json 文件。 2.在当前文件夹下新建一个 index.js 的文件&…

IT人求职就业手册:如何在数字时代脱颖而出

💂 个人网站:【 摸鱼游戏】【网址导航】【神级代码资源网站】🤟 一站式轻松构建小程序、Web网站、移动应用:👉注册地址🤟 基于Web端打造的:👉轻量化工具创作平台💅 想寻找共同学习交…

《数据库技术及其对我国企业发展的重大贡献》

数据库技术及其对我国企业发展的重大贡献 一、夯实数字化基础,助力企业转型二、提升数据处理能力,增强企业核心竞争力三、保障数据安全,筑牢企业发展防线四、推动技术创新,引领企业未来发展五、构建数据生态,激发企业创…

Vue + View-ui-plus Upload实现手动上传

本文实现Vue Upload组件多文件手动上传&#xff0c;支持上传图片&#xff08;image&#xff09;、压缩文件(zip/rar)、表格(excel)、pdf 一、dom结构 <Row><Col :span"19"></Col><Col :span"2"><div class"ivu-btn-uplo…

基于自监督学习的多维MRI数据去噪

摘要 目的&#xff1a;开发一种基于自监督学习方法的高维MRI数据去噪框架&#xff0c;该框架无需基准真值。 方法&#xff1a;定量MRI面临着信噪比(SNR)的限制&#xff0c;而且复杂的非线性信号模型使得拟合过程容易受到噪声的影响。为了解决这些问题&#xff0c;本研究提出了…

智慧停车场反向寻车功能:蓝牙iBeacon技术赋能地下车库精准定位与导航

随着城市车辆数量的激增&#xff0c;传统停车场面临着管理效率低下、停车难、寻车难等问题。智慧停车场导航停车和反向寻车技术的引入&#xff0c;为解决这些问题提供了创新方案&#xff0c;极大提升了停车场的智能化水平和用户体验。 智慧停车场导航系统的技术架构 1.基于3D…

ETL数据集成丨快速将MySQL数据迁移至Doris数据库

随着大数据技术的迅速发展&#xff0c;越来越多的企业开始寻求高效、灵活的数据存储与分析解决方案。Apache Doris&#xff08;原名 Palo&#xff09;作为一款高性能的MPP&#xff08;大规模并行处理&#xff09;分析型数据库&#xff0c;凭借其在OLAP场景下的卓越表现&#xf…

丝滑的动态Dock栏设计:交互式网页元素的实现

动态Dock栏设计&#xff1a;交互式网页元素的实现 在现代网页设计中&#xff0c;交互性是一个关键要素&#xff0c;它能够提升用户体验并使网页更加生动。本文将深入分析一个交互式Dock栏的设计案例&#xff0c;它通过CSS自定义属性和JavaScript事件处理&#xff0c;实现了一个…

redis的集群(高可用)

redis集群的三种模式&#xff1a; 主从复制 奇数 三台 一主两从 哨兵模式 3 一主两从 cluster集群 六台 主从复制&#xff1a;和mysql的主从复制类似&#xff0c;主可以写&#xff0c;写入主的数据通过RDB方式把数据同步到从服务器&#xff0c;从不能更新到主&#xff0c;也…

UML类图 详解

总目录 前言 作为一个程序员&#xff0c;我们经常会使用UML来绘制各种图&#xff08;UML中定义了用例图、类图、时序图、协作图等九种&#xff09;&#xff0c;类图就是其中常用图之一。设计模式中经常会用到的是类图&#xff0c;本文主要是学习UML类图相关资料后的汇总笔记&a…