# Elise 伊莉丝 爬虫框架
![elise](./elise.png)
> 名字取材于游戏《英雄联盟》中的一名英雄-蜘蛛女皇。
## 简介
Elise一个开源的商业友好的java爬虫框架。他的目标是建立一个强大的可配置分布式爬虫框架,能够囊括绝大多数使用场景,通过大量的基础组件构建,任何人都能够构建一个复杂的傻瓜式爬虫平台
Elise的优势:
* 傻瓜式爬虫支持,语义化api,流畅/优雅
* 多线程,速度快
* 自动cookie和会话处理
* 组建化,提供了大量基础组建,扩展性高
* 完全支持分布式
* 提供生命周期回调,任务完成,任务取消,下载成功,下载失败等等一系列回调支持
* 支持任务暂停、取消、恢复等功能,并且配套提供了相应的声明周期回调方法
* 对于爬取结果相较于纯文字或者纯html,增加一种富文本结果支持。富文本能将爬取结果段以文本(带链接文本)+图片+音频+视频等内容通过一个结果呈现,这对于开发者而言也许能更好的做内容爬去,而不再需要费劲解析,完整的文章就完整的保存下来。
* 支持xpath/regex/css多模式组合爬取
* html unit模拟浏览器
* 商业友好(采用 AGPL-3.0 协议)
...
## 模块设计
| 模块名 | 功能说明 |
|---------------------------|-------------------------------------------------------------------------------------------------------------------------------|
| Elise-core | 爬虫框架核心 |
| Elise-client | 单实例爬虫扩展 |
| Elise-distributed | 分布式爬虫扩展,但是不涉及任何具体分布式依赖(例如redis)。仅提供基础类以及相关的接口,其他分布式扩展包必须引用此模块进行扩展 |
| Elise-jedis-support | 分布式redis支持组件,具体使用jedis |
| Elise-redis-support | 分布式redis支持组件,具体使用lettuce |
| Elise-kafka-support | 分布式kafka支持组件 |
| spring-boot-elise-starter | 爬虫的spring boot自动配置组件,用于配合spring boot框架 |
| .... | 更多模块实现,欢迎讨论 |
## maven仓库
```
<dependency>
<groupId>site.zido</groupId>
<artifactId>Elise-client</artifactId>
<version>{version}</version>
</dependency>
```
暂无稳定版本,你可以使用`1.0.0-SNAPSHOT`做为版本号来预先体验开发版本
> 请注意:不稳定且许多api暂未实现,请持续关注[ROADMAP.md](./ROADMAP.md)开发路线文档,期待第一个版本的诞生,一定会惊艳到你
## 快速试用
轻松利用response回调句柄,语义化api,像说话一样简单的爬取一个网站
> 尝试爬取我的github仓库:
```java
SpiderBuilder.defaults().of(response -> {
response.modelName("project");
response.asTarget().matchUrl("github\\.com/zidoshare/[^/]*$");
response.asHelper().regex("github\\.com/zidoshare/[^/]*$");
response.asContent().html().xpath("//*[@id=\"js-repo-pjax-container\"]/div[1]/div/h1/strong/a").text().save("title");
response.asContent().html().xpath("//span[@class=\"text-gray-dark mr-2\"]").text().save("description");
response.asContent().html().xpath("//*[@id=\"readme\"]/div[2]").text().save("readme");
}).execute("http://github.com/zidoshare").block();
```
框架的核心需编程逻辑仅在response的回调中。response提供了url/html等供你快速的匹配内容
依靠高度封装的api,试着写下`response.`你能轻松的知道接下来可以做什么。
或者转到[使用文档](./TUTORIAL.md),详细的看看Elise的使用吧
## 构建指北
Elise框架使用maven构建,并使用大量jdk8特性,请保证你的jdk版本为8以上。
获取源码:
`git clone https://github.com/zidoshare/Elise.git`
`cd Elise`
因为作者是使用idea进行开发,所以推荐的开发编辑器为IntelliJ IDEA。
如果你在其他编辑器中开发,请确保你的编辑器中的配置文件/构建文件/缓存等不会出现在提交目录中。这可以在[.gitignore](https://git-scm.com/gitignore)文件中进行设置,也欢迎提交类似的pr
## 状态
进行中(每天都在努力的编码中)...一个人的力量有限,希望有人能加入:smile:
目前还没能达到正式版本的状态。不过已经能基本保证正常运行,可以自行clone代码构建运行。
开发路线参考 [ROADMAP.md](./ROADMAP.md)。
## 贡献
行为准则请参阅[CODE_OF_CONDUCT.md](./CODE_OF_CONDUCT.md)
请查看[贡献说明](./CONTRIBUTING.md)。
## 交流反馈
问题和建议反馈:
[Github issues](https://github.com/zidoshare/Elise/issues)
邮箱: [wuhongxu1208@gmail.com](mailto:wuhongxu1208@gmail.com)
## 感谢
本项目的开发离不开前辈的探索,许多思想理念也来自于其他框架:
* [webmagic](https://github.com/code4craft/webmagic):一个开源的Java垂直爬虫框架.
* [Spiderman2](https://gitee.com/l-weiwei/Spiderman2):简单的说,这是一个网页爬虫工具,专门对网页内容进行抓取和解析
* [colly](https://github.com/gocolly/colly):优雅快速的go语言爬虫框架
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
爬虫(Web Crawler)是一种自动化程序,用于从互联网上收集信息。其主要功能是访问网页、提取数据并存储,以便后续分析或展示。爬虫通常由搜索引擎、数据挖掘工具、监测系统等应用于网络数据抓取的场景。 爬虫的工作流程包括以下几个关键步骤: URL收集: 爬虫从一个或多个初始URL开始,递归或迭代地发现新的URL,构建一个URL队列。这些URL可以通过链接分析、站点地图、搜索引擎等方式获取。 请求网页: 爬虫使用HTTP或其他协议向目标URL发起请求,获取网页的HTML内容。这通常通过HTTP请求库实现,如Python中的Requests库。 解析内容: 爬虫对获取的HTML进行解析,提取有用的信息。常用的解析工具有正则表达式、XPath、Beautiful Soup等。这些工具帮助爬虫定位和提取目标数据,如文本、图片、链接等。 数据存储: 爬虫将提取的数据存储到数据库、文件或其他存储介质中,以备后续分析或展示。常用的存储形式包括关系型数据库、NoSQL数据库、JSON文件等。 遵守规则: 为避免对网站造成过大负担或触发反爬虫机制,爬虫需要遵守网站的robots.txt协议,限制访问频率和深度,并模拟人类访问行为,如设置User-Agent。 反爬虫应对: 由于爬虫的存在,一些网站采取了反爬虫措施,如验证码、IP封锁等。爬虫工程师需要设计相应的策略来应对这些挑战。 爬虫在各个领域都有广泛的应用,包括搜索引擎索引、数据挖掘、价格监测、新闻聚合等。然而,使用爬虫需要遵守法律和伦理规范,尊重网站的使用政策,并确保对被访问网站的服务器负责。
资源推荐
资源详情
资源评论
收起资源包目录
一个简单的,高度可扩展的,并且支持分布式的爬虫框架.zip (169个子文件)
CNAME 15B
.editorconfig 146B
.gitignore 240B
.gitkeep 0B
.gitkeep 0B
build.gradle 4KB
build.gradle 1KB
build.gradle 490B
build.gradle 422B
build.gradle 354B
settings.gradle 231B
build.gradle 191B
build.gradle 141B
build.gradle 17B
AbstractScheduler.java 13KB
SimpleHttpClient.java 12KB
DefaultResponseProcessor.java 11KB
UrlUtils.java 9KB
RequestBuilder.java 7KB
GlobalConfigBuilder.java 7KB
SpringKafkaTaskScheduler.java 7KB
SpiderBuilder.java 6KB
SpiderTest.java 6KB
Http.java 6KB
HttpClientDownloaderFactory.java 6KB
IdWorker.java 6KB
NumberMatcherSelectHandler.java 5KB
HttpClientDownloader.java 5KB
MultiThreadTaskScheduler.java 5KB
DefaultRequest.java 4KB
ValidateUtils.java 4KB
HtmlUtils.java 4KB
GlobalConfig.java 4KB
DefaultResponse.java 4KB
Fragment.java 3KB
LinkSelectHandler.java 3KB
HtmlUnitDownloader.java 3KB
SingleListenerContainer.java 3KB
Asserts.java 3KB
DefaultOperator.java 3KB
Proxy.java 3KB
SiteMatcherSelectHandler.java 2KB
Seed.java 2KB
XpathSelectHandler.java 2KB
RedisTaskScheduler.java 2KB
ModuleNamedDefaultThreadFactory.java 2KB
ResultItem.java 2KB
CssSelectHandler.java 2KB
DefaultSelectableResponseTest.java 2KB
SimpleProxyProvider.java 2KB
MappedConfig.java 2KB
DefaultSelectableResponse.java 2KB
MemorySaver.java 2KB
CustomRedirectStrategy.java 2KB
RegexSelectHandler.java 2KB
DefaultCookie.java 2KB
HttpClientBodyWrapper.java 2KB
Spider.java 2KB
Model.java 2KB
TargetDescriptor.java 2KB
DataDescriptor.java 2KB
ResponseHolder.java 2KB
Server.java 2KB
Operator.java 2KB
TestServer.java 1KB
DefaultDownloaderFactory.java 1KB
DefaultBody.java 1KB
ModelField.java 1KB
BlankSaver.java 1KB
Action.java 1KB
SystemClock.java 1KB
ResponseContextHolder.java 1KB
ElementSelectable.java 1KB
DefaultTask.java 1KB
StringUtils.java 1KB
E.java 1KB
Safe.java 1KB
EventUtils.java 1KB
ConfigUtils.java 1KB
TaskEventListener.java 1KB
StaticHandler.java 1KB
Paragraph.java 1KB
HelpDescriptor.java 1KB
DuplicationProcessor.java 1KB
Seed.java 1KB
Pair.java 1KB
HashSetDeduplicationProcessor.java 1KB
Request.java 1006B
DefaultMemoryCountManager.java 1000B
ElementValue.java 994B
DefaultHeader.java 984B
CountManager.java 961B
SingleEventListener.java 939B
Saver.java 934B
TemplateUtils.java 910B
OriginSelectorHandler.java 907B
Config.java 905B
Partition.java 902B
HtmlUtilsTest.java 893B
SelectableResponse.java 809B
共 169 条
- 1
- 2
资源评论
JJJ69
- 粉丝: 6262
- 资源: 5775
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功