插拔式java_Java网络爬虫MySpider,特点是组件化,可插拔式

Introduction

MySpider是使用Java语言实现的网络爬虫项目,它本来是我的一个个人爬虫练习项目,但是由于爬虫需求丰富,针对每次爬虫需求总感觉让我在重写整个项目的感觉,故为了提高开发效率,我开发了MySpider

What Component does MySpider have?

Boot,用于MySpider的初始化配置

ScheduleQueue,需爬取的URL链接队列

Downloader,用于处理各类网络下载需求,保存源数据至本地

HttpHeadParser,用于处理HTTP报文头数据

Processor,用于处理源数据,爬取我们需要的信息,保存至结果文件内

DataService,提供数据持久化的服务,最基本的为数据的crud接口(默认采用mybatisDataService来使用mybatis进行数据库操作,你可以编写自定义的DataService来使用别的你想用的持久层框架)

DataObject,存放POJO类的地方

DatabaseAssist,若使用了数据库作为数据持久化工具,则必须将所有为了连接数据库而产生的相关辅助类全部放在DatabaseAssist包内,比如使用了mybatis,则建立mybatis子包,将mapper类和mapper.xml文件全部放置在这里。

Constants,运行时常量库

MySpider,一个MySpider代表一个网络爬虫的对象,可以调用其他组件的功能

MyLogger,封装第三方日志文件的调用接口,使得替换日志文件框架不会对项目本体代码造成任何影响(无痛替换)

UI,java GUI框架由于业界不火,故本程序暂无UI,后续会接入至个人Web项目中,到那时给予一个web ui界面

除了Boot,DataObject,其他组件可以根据既定接口实现自定义组件

~/resources,本地资源文件夹

What's in the resource folder

properties,存储各类配置文件

download,存储Download下载完毕的源数据

ProcessorTmp,存储ProcessorTmp爬取的数据的临时文件

sql,存放sql文件

What can you learn from your MySpider

如果你在寻找一个用于练手的初级Java爬虫项目,那么从MySpider开始吧! MySpider蕴含了爬虫应用的精髓,麻雀虽小五脏俱全

Java网络编程在爬虫中的应用

Java多线程开发在爬虫中的应用

maven构建工具的基本使用

...balabala

How To Start

我没有提供一个完备的jar文件,因为MySpider的具体功能可以由你自己实现。 在MySpider中,我已经提供了一个完整的Demo程序(爬取中国青年网数据,一次爬取5页) 你可以在使用eclipse或者idea使用maven项目选项进行导入,使用maven的compile指令编译本项目 随后执行Main类的main方法,即可运行我提供的这个Demo程序

[其他注意事项]

useThreads = true 则使用多线程启动

为MySpider添加DataService组件则会自动将数据保存至数据库而不是存至临时文件(注意先配置数据库,mybatis-config.xml)

若使用DataService,请确保数据库连接的线程安全,推荐使用ThreadLocal实现,我本人采用了限定连接对象在method scope内,因为其简单且满足目前需求

[整合到Spring项目]

我今天尝试将MySpider整合到了自己的Spring项目中去,发现dataService那一层组件很难整合到自己的Spring项目中,有非常高的耦合度,后续会剔除此模块,使得MySpider只提供纯粹的数据爬取,而不在乎数据持久化。

数据持久化应该是使用了MySpider去爬取数据的具体项目本身的任务,而非MySpider的任务,所以我会在后续为MySpider提供一个全新的数据接口,可以在每次爬取完指定信息后,通过调用该接口可以获取到信息的集合list或者map

Join us

所有组件可以自定义,所以欢迎你使用MySpider来完成自己的需求

自定义的类请放在custom文件夹内,保持整洁

At last

喜欢请star!(star多说不定会有后续更新哦...)

LICENSE

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值