Skip to content

✋ A simple, extensible, and support for a distributed crawler framework.一个简单的,高度可扩展的,并且支持分布式的爬虫框架

License

Notifications You must be signed in to change notification settings

Programming-With-Love/Elise

Folders and files

NameName
Last commit message
Last commit date

Latest commit

18fb37a · May 27, 2020
Dec 9, 2018
May 27, 2020
May 27, 2020
May 27, 2020
May 27, 2020
May 27, 2020
May 27, 2020
May 27, 2020
Feb 13, 2019
May 27, 2020
Apr 29, 2020
May 9, 2020
May 27, 2020
Apr 29, 2020

Repository files navigation

Elise 伊莉丝 爬虫框架

elise

名字取材于游戏《英雄联盟》中的一名英雄-蜘蛛女皇。

简介

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开发路线文档,期待第一个版本的诞生,一定会惊艳到你

快速试用

轻松利用response回调句柄,语义化api,像说话一样简单的爬取一个网站

尝试爬取我的github仓库:

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.你能轻松的知道接下来可以做什么。

或者转到使用文档,详细的看看Elise的使用吧

构建指北

Elise框架使用maven构建,并使用大量jdk8特性,请保证你的jdk版本为8以上。

获取源码:

git clone https://github.com/zidoshare/Elise.git

cd Elise

因为作者是使用idea进行开发,所以推荐的开发编辑器为IntelliJ IDEA。

如果你在其他编辑器中开发,请确保你的编辑器中的配置文件/构建文件/缓存等不会出现在提交目录中。这可以在.gitignore文件中进行设置,也欢迎提交类似的pr

状态

进行中(每天都在努力的编码中)...一个人的力量有限,希望有人能加入:smile:

目前还没能达到正式版本的状态。不过已经能基本保证正常运行,可以自行clone代码构建运行。

开发路线参考 ROADMAP.md

贡献

行为准则请参阅CODE_OF_CONDUCT.md

请查看贡献说明

交流反馈

问题和建议反馈:

Github issues

邮箱: wuhongxu1208@gmail.com

感谢

本项目的开发离不开前辈的探索,许多思想理念也来自于其他框架:

  • webmagic:一个开源的Java垂直爬虫框架.

  • Spiderman2:简单的说,这是一个网页爬虫工具,专门对网页内容进行抓取和解析

  • colly:优雅快速的go语言爬虫框架

About

✋ A simple, extensible, and support for a distributed crawler framework.一个简单的,高度可扩展的,并且支持分布式的爬虫框架

Topics

Resources

License

Code of conduct

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages