# Introduction
MySpider是使用Java语言实现的网络爬虫项目,它本来是我的一个个人爬虫练习项目,但是由于爬虫需求丰富,针对每次爬虫需求总感觉让我在重写整个项目的感觉,故为了提高开发效率,我开发了MySpider
# What Component does MySpider have?
1. Boot,用于MySpider的初始化配置
2. ScheduleQueue,需爬取的URL链接队列
3. Downloader,用于处理各类网络下载需求,保存源数据至本地
4. HttpHeadParser,用于处理HTTP报文头数据
5. Processor,用于处理源数据,爬取我们需要的信息,保存至结果文件内
6. DataService,提供数据持久化的服务,最基本的为数据的crud接口(默认采用mybatisDataService来使用mybatis进行数据库操作,你可以编写自定义的DataService来使用别的你想用的持久层框架)
7. DataObject,存放POJO类的地方
8. DatabaseAssist,若使用了数据库作为数据持久化工具,则必须将所有为了连接数据库而产生的相关辅助类全部放在DatabaseAssist包内,比如使用了mybatis,则建立mybatis子包,将mapper类和mapper.xml文件全部放置在这里。
8. Constants,运行时常量库
9. MySpider,一个MySpider代表一个网络爬虫的对象,可以调用其他组件的功能
10. MyLogger,封装第三方日志文件的调用接口,使得替换日志文件框架不会对项目本体代码造成任何影响(无痛替换)
* UI,java GUI框架由于业界不火,故本程序暂无UI,后续会接入至个人Web项目中,到那时给予一个web ui界面
* 除了Boot,DataObject,其他组件可以根据既定接口实现自定义组件
* ~/resources,本地资源文件夹
# What's in the resource folder
1. properties,存储各类配置文件
2. download,存储Download下载完毕的源数据
3. ProcessorTmp,存储ProcessorTmp爬取的数据的临时文件
4. sql,存放sql文件
# What can you learn from your MySpider
1. 如果你在寻找一个用于练手的初级Java爬虫项目,那么从MySpider开始吧! MySpider蕴含了爬虫应用的精髓,麻雀虽小五脏俱全
2. Java网络编程在爬虫中的应用
3. Java多线程开发在爬虫中的应用
4. maven构建工具的基本使用
5. ...balabala
# How To Start
我没有提供一个完备的jar文件,因为MySpider的具体功能可以由你自己实现。
在MySpider中,我已经提供了一个完整的Demo程序(爬取中国青年网数据,一次爬取5页)
你可以在使用eclipse或者idea使用maven项目选项进行导入,使用maven的compile指令编译本项目
随后执行Main类的main方法,即可运行我提供的这个Demo程序
[其他注意事项]
1. useThreads = true 则使用多线程启动
2. 为MySpider添加DataService组件则会自动将数据保存至数据库而不是存至临时文件(注意先配置数据库,mybatis-config.xml)
3. 若使用DataService,请确保数据库连接的线程安全,推荐使用ThreadLocal实现,我本人采用了限定连接对象在method scope内,因为其简单且满足目前需求
[整合到Spring项目]
1. 我今天尝试将MySpider整合到了自己的Spring项目中去,发现dataService那一层组件很难整合到自己的Spring项目中,有非常高的耦合度,后续会剔除此模块,使得MySpider只提供纯粹的数据爬取,而不在乎数据持久化。
2. 数据持久化应该是使用了MySpider去爬取数据的具体项目本身的任务,而非MySpider的任务,所以我会在后续为MySpider提供一个全新的数据接口,可以在每次爬取完指定信息后,通过调用该接口可以获取到信息的集合list或者map
# Join us
所有组件可以自定义,所以欢迎你使用MySpider来完成自己的需求
自定义的类请放在custom文件夹内,保持整洁
# At last
喜欢请star!(star多说不定会有后续更新哦...)
# LICENSE
[MIT](https://github.com/zazaluMonster/MySpider/blob/master/LICENSE)
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
特点是组件化,可插拔式的,可以根据一套接口实现你自己自定义的网络爬虫需求(本人JavaSE的温习项目,适合java新人) 爬虫(Web Crawler)是一种自动化程序,用于从互联网上收集信息。其主要功能是访问网页、提取数据并存储,以便后续分析或展示。爬虫通常由搜索引擎、数据挖掘工具、监测系统等应用于网络数据抓取的场景。 爬虫的工作流程包括以下几个关键步骤: URL收集: 爬虫从一个或多个初始URL开始,递归或迭代地发现新的URL,构建一个URL队列。这些URL可以通过链接分析、站点地图、搜索引擎等方式获取。 请求网页: 爬虫使用HTTP或其他协议向目标URL发起请求,获取网页的HTML内容。这通常通过HTTP请求库实现,如Python中的Requests库。 解析内容: 爬虫对获取的HTML进行解析,提取有用的信息。常用的解析工具有正则表达式、XPath、Beautiful Soup等。这些工具帮助爬虫定位和提取目标数据,如文本、图片、链接等。 数据存储: 爬虫将提取的数据存储到数据库、文件或其他存储介质中,以备后续分析或展示。常用的存储形式包括关系型数据库、NoSQL数据库、JSON文件等。 遵守规则: 为避免对网站造成过大负担或触发反爬虫机制,爬虫需要遵守网站的robots.txt协议,限制访问频率和深度,并模拟人类访问行为,如设置User-Agent。 反爬虫应对: 由于爬虫的存在,一些网站采取了反爬虫措施,如验证码、IP封锁等。爬虫工程师需要设计相应的策略来应对这些挑战。 爬虫在各个领域都有广泛的应用,包括搜索引擎索引、数据挖掘、价格监测、新闻聚合等。然而,使用爬虫需要遵守法律和伦理规范,尊重网站的使用政策,并确保对被访问网站的服务器负责。
资源推荐
资源详情
资源评论
收起资源包目录
Java网络爬虫MySpider,特点是组件化,可插拔式的,可以根据一套接口实现你自己自定义的网络爬虫需求(本人JavaSE的温习项目,适合java新人).zip (42个子文件)
SJT-code
pom.xml 3KB
src
main
resources
sql
Youth.sql 364B
MySpider.sql 68B
ProcessorTmp
demoTmp 7B
properties
Boot.properties 132B
custom
DemoBoot.properties 132B
mybatis-config.xml 2KB
log4j.properties 259B
download
demo 16B
java
Constants
Constants.java 380B
Main
Main.java 2KB
MySpider
MySpider.java 3KB
Util
DateUtil.java 372B
FIleUtil.java 1KB
ErrorCode.java 417B
MySpiderFactory.java 3KB
MyLogger.java 1KB
StringUtil.java 892B
PathUtil.java 293B
HttpHeadParser
DemoHttpHeadParser.java 589B
Boot
AbstractBoot.java 1KB
custom
DemoBoot.java 1KB
Boot.java 163B
Processor
custom
YouthProcessor.java 4KB
Processor.java 497B
AbstractProcessor.java 474B
ScheduleQueue
AbstractScheduleQueue.java 812B
custom
DemoScheduleQueue.java 644B
ScheduleQueue.java 648B
DataObject
YouthNews.java 748B
DataService
DataService.java 330B
mybatis
YouthNewsService.java 2KB
Test
TestGetHtml.java 7KB
DownLoader
AbstractDownloader.java 1KB
custom
StreamDownloader.java 1KB
Downloader.java 791B
DatabaseAssist
mybatis
mapper
YouthNewsMapper.xml 2KB
YouthNewsMapper.java 179B
BaseMapper.java 295B
LICENSE 1KB
.gitignore 331B
README.md 4KB
共 42 条
- 1
资源评论
JJJ69
- 粉丝: 5985
- 资源: 5593
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- XILINXFPGA源码Xilinxspratan3xcs100E(VGAPS2)
- XILINXFPGA源码XilinxSPARTAN-3E入门开发板实例
- XILINXFPGA源码XilinxSdramVerilog和VHDL版本文档
- 物联网智能家居方案-基于Nucleo-STM32L073&机智云(大赛作品,文档齐全,可直接运行)(文档加Matlab源码)
- XILINXFPGA源码XilinxISE9.xFPGACPLD设计源码
- 成都市地图含高新区(高新南区,高新西区),天府新区,东部新区虚拟行政区划
- XILINXFPGA源码XilinxEDK设计试验
- XILINXFPGA源码XilinxEDKMicroBlaze内置USB固件程序
- 基于 django 的视频点播后台管理系统源代码+数据库
- 基于Java的网上医院预约挂号系统的设计与实现(部署视频)-kaic.mp4
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功