针对工程实践python网页爬取项目需求分析和概念模型
一、概述
最近课堂《高级软件工程》上老师举例是以带有数据库存储的信息系统为例,是比较典型的例子,但这是一种需求分析和概念原型设计的通用方法,并不局限于信息系统一类的用途,就像“程序=算法+数据结构”也是可以使用用例+数据模型来理解一样。
当我们拿到一个需求的时候我们要从四点着手如下
(1)用户:谁会用这个功能?
(2)场景:用户在什么情况下会用?
(3)问题:用户在上述场景下,碰到什么问题?
(4)方案:用户现在的解决方案是什么?
针对工程实践《基于python的信息搜集系统及其数据展示平台搭建》,我们可以得到初步的概念模型。即通过网络爬虫技术获取网站的数据,利用数据库技术存储数据,最后利用可视化分析的形式给出我们最终的研究结果,从而对市场信息达到规整,实时预测动向的作用。
二、需求分析
功能性分析:
功能性需求即软件必须完成哪些事,必须实现哪些功能,以及为了向其用户提供有用的功能所需执行的动作。功能性需求是软件需求的主体。开发人员需要亲自与用户进行交流,核实用户需求,从软件帮助用户完成事务的角度上充分描述外部行为,形成软件需求规格说明书。
- 网页访问以及网页更新
- 网页信息批量爬取
- 数据展示
- 用户登录以及权限管理
- 实时数据同步
- 数据库访问
非功能性分析
作为对功能性需求的补充,软件需求分析的内容中还应该包括一些非功能需求。主要包括软件使用时对性能方面的要求、运行环境要求。软件设计必须遵循的相关标准、规范、用户界面设计的具体细节、未来可能的扩充方案等。
- 网页的兼容性(PC和移动端)
- 处理反爬机制
- 数据实时更新
- 网页页面美观
- 数据展示形式直观(可视化)
- 并发性需求(大量用户同时访问)
- 稳定性需求
三、用例图
用例的核心概念中首先它是一个业务过程,经过逻辑整理抽象出来的一个业务过程,这是用例的实质。什么是业务过程?在待开发软件所处的业务领域内完成特定业务任务的一系列活动就是业务过程。
用例图指出了:
1.软件的使用者、软件的功能
2.从用户的角度描述了系统的功能,并指出各个功能的执行者,强调用户的使用者,系统为执行者完成哪些功能。
四、业务类图
爬虫模块的主要任务是负责寻找网页,并将网页内的URL和关键字提取出来。此模块又详细分为两大模块:服务器模块和正则引擎模块,这两个模块分别负责上述的两个功能。
服务器模块向某个种子URL发送请求,或得其页面内容;正则引擎模块将服务器获取的页面用正则表达式对其进行分析,截取其中的URL和关键字,然后再将URL传递给服务器模块。系统按照这样的方式不断的抓取网页并进行分析,最后将结果存进数据库。
数据库模块在整个系统中起到存储和桥梁作用。爬虫模块将搜索的结果整理完成后存入数据库,搜索模块从数据库中获取需要的信息并呈现给用户。
结果展示模块:结果页面是数据库结果的接受者,当数据库完成搜素后会将结果传递给次页面,然后结果页面会将结果呈现给用户。
五、数据模型
数据模型(data model)是对复杂现实世界数据结构的一种简单表达,如采用图形方式。广而言之,模型是对复杂现实世界对象或事件的抽象,它能帮助我们理解现实世界的复杂性。而在数据库环境中,数据模型则是表示数据结构及其特征、关系、约束、变换以及为特定问题域提供支持的其他组成。
由业务类图可以得到以下数据模型:
User表
名称 | 数据类型 | 备注 |
id | int | 主键,用户id(标识符) |
name | string | 用户姓名 |
password | string | 用户登陆密码 |
spread_thread_id | string | 爬虫线程id |
五、概念模型
概念是人对能代表某种事物或发展过程的特点及意义所形成的思维结论。概念原型是一种虚拟的、理想化的软件产品形式。我们不难得出:概念原型=用例+数据模型
所以,针对以上几个部分的建模,这里的概念原型就很清晰了。简而言之就是用户在系统中选择自己查询的大宗商品,系统根据用户选择的商品从数据库中找到对应的数据信息,并且向用户进行展示,同时系统还会提供相应的数据分析;而系统的管理员也会对该系统的数据不断更新和分析,以确保用户能够获取更具有时效性的信息。
总结为:
具体在工作流程中表现为用户登录后,选择性的爬取自己想要的URL,可以查看爬取后的内容,并且可以对数据进行可视化处理。