# SeimiCrawler
**Repository Path**: SamYang/SeimiCrawler
## Basic Information
- **Project Name**: SeimiCrawler
- **Description**: 分布式敏捷的爬虫框架
- **Primary Language**: Unknown
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 1
- **Forks**: 28
- **Created**: 2016-05-27
- **Last Updated**: 2020-12-19
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
SeimiCrawler
==========
An agile,powerful,standalone,distributed crawler framework.
SeimiCrawler的目标是成为Java世界最实用的爬虫框架,欢迎大家一起努力。
# 简介 #
SeimiCrawler是一个敏捷的,独立部署的,支持分布式的Java爬虫框架,希望能在最大程度上降低新手开发一个可用性高且性能不差的爬虫系统的门槛,以及提升开发爬虫系统的开发效率。在SeimiCrawler的世界里,绝大多数人只需关心去写抓取的业务逻辑就够了,其余的Seimi帮你搞定。设计思想上SeimiCrawler受Python的爬虫框架Scrapy启发很大,同时融合了Java语言本身特点与Spring的特性,并希望在国内更方便且普遍的使用更有效率的XPath解析HTML,所以SeimiCrawler默认的HTML解析器是[JsoupXpath](http://jsoupxpath.wanghaomiao.cn)(独立扩展项目,非jsoup自带),默认解析提取HTML数据工作均使用XPath来完成(当然,数据处理亦可以自行选择其他解析器)。
# 社区讨论 #
大家有什么问题或建议现在都可以选择通过下面的邮件列表讨论,首次发言前需先订阅并等待审核通过(主要用来屏蔽广告宣传等)
- 订阅:请发邮件到 `seimicrawler+subscribe@googlegroups.com`
- 发言:请发邮件到 `seimicrawler@googlegroups.com`
- 退订:请发邮件至 `seimicrawler+unsubscribe@googlegroups.com`
- QQ群:`557410934`

这个就是给大家自由沟通啦
- 微信订阅号

里面会发布一些使用案例等文章,以及seimi体系相关项目的最新更新动态等。
# 号外 #
- 2016.04.14
用于实现浏览器级动态页面渲染以及抓取的[SeimiAgent](https://github.com/zhegexiaohuozi/SeimiAgent)已经发布。SeimiAgent基于Qtwebkit开发,主流浏览器内核(chrome,safari等),可在服务器端后台运行,并通过http协议发布对外调用API,支持任何语言或框架从SeimiAgent获取服务,彻底的解决动态页面渲染抓取等问题。具体可以参考SeimiAgent主页。SeimiCrawler已经在`v0.3.0`中内置支持SeimiAgent的使用并添加了[demo](https://github.com/zhegexiaohuozi/SeimiCrawler/blob/master/demo/src/main/java/cn/wanghaomiao/crawlers/SeimiAgentDemo.java),具体请查看demo或是官方文档。
- 2016.01.05
专门为SeimiCrawler工程打包部署的`maven-seimicrawler-plugin`已经发布可用,详细请继续参阅[maven-seimicrawler-plugin](https://github.com/zhegexiaohuozi/maven-seimicrawler-plugin)或是下文`工程化打包部署`章节。
# 原理示例 #
## 基本原理 ##

## 集群原理 ##

# 快速开始 #
添加maven依赖(中央maven库最新版本0.3.2):
```
cn.wanghaomiao
SeimiCrawler
0.3.2
```
在包`crawlers`下添加爬虫规则,例如:
```
@Crawler(name = "basic")
public class Basic extends BaseSeimiCrawler {
@Override
public String[] startUrls() {
return new String[]{"http://www.cnblogs.com/"};
}
@Override
public void start(Response response) {
JXDocument doc = response.document();
try {
List