# 项目设计 设计一个爬取B站数据的爬虫。主要功能就只是单纯地**爬取**并**储存**通过bilibiliapi(或者还有通过html爬取)的数据。以“插件”的形式来从数据库获取数据用于展示、统计等用途。 [TOC] # 模块初步设计 ## 总体设计 做好接口的明确和详细的定义,各个模块相互独立,这样不容易因为一个模块的设计的问题导致全盘翻车。 ## 爬取模块 因为哔哩哔哩没有对爬虫做很大限制,甚至直接提供API,网上能轻易找到很多[相关API](https://github.com/topics/bilibili-api)给你用,所以我们爬取模块主要工作可能就是解析通过API获取的json。该模块的同学请没事多翻翻看,了解下有啥有意思的信息可以爬取下来。 另外全靠API是不是太没技术含量了?可以考虑去了解下怎么从HTML里爬取有用的数据出来。 ## 数据储存模块 目前考虑用MySQL ## 系统界面模块 控制台,或是GUI都行。 Java不适合写桌面程序,考虑写Web应用。 ## 数据可视化模块 感觉看着效果还不错的开源库 https://github.com/jtablesaw/tablesaw # 模块具体设计 ## 系统界面模块 功能列表: * 选取爬取任务 * 提交爬取任务 * 控制单个爬取任务(暂停继续终止) 没有和数据库直接交互。 UI界面的设计思路: ## 爬取模块 ### CrawlerRunner 通过CrawlerManager进行对TaskRunner的控制。 ### TaskRunner 就是个线程,继承了Thread,作为爬取任务的一个**容器**。接受来自CrawlerManager的控制,启动暂停终止等操作。 ### XXTask 提供对单独的爬取目标的代码逻辑,也就是怎么爬的那些函数。创建TaskRunner时,指定这个TaskRunner的Task,TaskRunner就能利用Task里提供的爬取方法来进行爬取。 本身不包含多线程的逻辑。只是提供方法给Runner去用。 XXTask负责在每一次爬取后调用数据库模块来储存爬取信息。 ## 数据库模块 提供简单的数据库操作抽象。 连接数据库(数据库是预先创建的) 清空数据表(数据表是预先创建的),每次setupDB的时候会清空。
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up