软件系统设计方案-豆瓣爬虫

1 项目简介

这篇文章主要是针对一个对于豆瓣的电影数据进行爬取的爬虫程序,可以根据具体需求爬取相关电影条目的数据。主要目的是获取数据。该项目的用户主要是想分析电影数据的相关从业人员,可以通过该分析系统查看热榜电影的数据。将阐述使用的设计模式、软件架构风格与策略,并采用视图来描述软件系统的模型。进行数据库和核心数据结构的设计分析,最终形成软件系统概念原型。

 

 

 

2 项目的设计方案

2.1 系统架构

架构模式,也叫架构风格,一个架构模式描述软件系统里的基本的结构组织或纲要。架构模式提供一些呈先定义好的子系统,指定它们的责任,并给出把它们组织在一起的法则和指南。一个架构模式常常可以分解成很多个设计模式的联合使用。

该项目使用管道-过滤器模式,在管道和过滤器软件体系结构中,每个模块都有一组输入和一组输出。每个模块从它的输入端接收输入数据流,在其内部经过处理后,按照标准的顺序,将结果数据流送到输出端,以达到传递一组完整的计算结果实例的目的。通常情况下,可以通过对输入数据流进行局部变换,并采用渐增式计算方法,在未处理完所有输入数据以前,就可以产生部分计算结果,并将其送到输出端口(类似于流水线结构)。因此,称这种模块为“过滤器“。在这种结构中,各模块之间的连接器充当了数据流的导管,将一个过滤器的输出传到下一个过滤器的输入端。所以,这种连接器称为“管道”。

管道-过滤器模式的体系结构是面向数据流的软件体系结构

 

2.2 设计模式

2.2.1 设计模式概述

设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。

总体来说设计模式分为三大类:

创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。

结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。

行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式


2.2.2 责任链模式

责任链,顾名思义,就是用来处理相关事务责任的一条执行链,执行链上有多个节点,每个节点都有机会(条件匹配)处理请求事务,如果某个节点处理完了就可以根据实际业务需求传递给下一个节点继续处理或者返回处理完毕。责任链模式(Chain of Responsibility)使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有对象能够处理它。本项目使用责任链模式。

 

 


3 数据库设计

3.1 数据库设计

本项目使用MongDB作为数据库 ,MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。

MongoDB中的数据类型:

Object  ID :Documents 自生成的 _id

String: 字符串,必须是utf-8

Boolean:布尔值,true 或者false (这里有坑哦~在我们大Python中 True False 首字母大写)

Integer:整数 (Int32 Int64 你们就知道有个Int就行了,一般我们用Int32)

Double:浮点数 (没有float类型,所有小数都是Double)

Arrays:数组或者列表,多个值存储到一个键 (list哦,大Python中的List哦)

Object:如果你学过Python的话,那么这个概念特别好理解,就是Python中的字典,这个数据类型就是字典

Null:空数据类型 , 一个特殊的概念,None Null

Timestamp:时间戳

Date:存储当前日期或时间unix时间格式 (我们一般不用这个Date类型,时间戳可以秒杀一切时间类型)

序号说明名词类型长度主键
1 编号 _id Int 32 Y
2 影片详情链接 link String 不限 N
3 影片图片 imgSrc String 不限 N
4 影片片名 titles String 不限 N
5 影片评分 rating String 不限 N
6 评价人数 judgeNum Int 32 N
7 概况 inq String 不限 N
8 影片的相关内容 bd String 不限 N

3.2 项目结构

image-20201229200010426

4.项目视图

4.1逻辑视图

 

 

4.2物理视图

 

 

 

5.系统概念原型的核心工作机制和运行环境、技术选型

每个视图都是从不同的角度对软件架构进行描述和建模,比如从功能的角度、从代码结构的角度、从运行时结构的角度、从目录文件的角度,或者从项目团队组织结构的角度。

软件架构代表了软件系统的整体设计结构,它应该是所有这些视图的集合。但我们不会将不同角度的这些视图整合起来,因为不便于阅读和更新。不过我们会有意识地将不同角度的视图之间的映射关系和重叠部分了然于胸,从而深刻理解软件架构内在的一致性和完整性,这就是系统概念原型。

技术:python、Mongodb。使用python语言,基于Surllib库实现爬虫的爬取,数据存储部分则使用MongoDB非关系型数据库来存储获得到的数据。

posted @ 2020-12-30 10:49  AnWX  阅读(337)  评论(0)    收藏  举报