SeimiCrawler:Java领域的高效分布式爬虫框架

需积分: 50 8 下载量 63 浏览量 更新于2024-12-23 1 收藏 135KB ZIP 举报
资源摘要信息:"SeimiCrawler是一个简单、敏捷且支持分布式架构的Java爬虫框架,它特别适用于构建在Spring Boot基础上的应用程序,并使用Redisson作为分布式协调工具。SeimiCrawler框架的设计目标是提供一个既实用又高效的爬虫开发环境,旨在降低新手入门爬虫开发的门槛,同时也提高了爬虫系统的开发效率。 SeimiCrawler的设计受到了Python著名的爬虫框架Scrapy的启发,它融入了Java语言的特性和Spring框架的众多优势。框架中包括一个独立扩展的HTML解析器,这个解析器并非使用jsoup,而是基于效率更高的XPath解析技术来提取HTML文档中的数据。这样的设计不仅提高了数据处理的速度,还提供了对动态网页内容抓取的良好支持。 SeimiCrawler框架的主要特点包括: 1. 支持分布式:由于集成了Redisson,SeimiCrawler能够轻松地实现分布式爬虫的功能,从而能够高效地处理大规模的爬取任务。 2. 灵活性与扩展性:框架允许开发者使用自定义的XPath解析器,可以根据不同的需求进行选择和定制。 3. 高效的HTML数据解析:框架内部使用XPath作为主要的数据提取技术,相较于其他解析方法,XPath提供了更快的处理速度和更好的灵活性。 4. 社区支持:SeimiCrawler拥有一个活跃的社区,社区中的成员可以互相协作,共同促进框架的发展和优化。 该框架的使用场景十分广泛,包括但不限于网站数据监控、数据抓取、信息聚合、搜索引擎的预处理等。SeimiCrawler通过简化爬虫的开发流程,使得开发者可以更加专注于爬虫业务逻辑的实现,而无需过多地关注底层的分布式实现细节。 从技术架构的角度来看,SeimiCrawler框架的设计和实现为Java开发者提供了一个高效的解决方案,来构建复杂的爬虫系统。通过使用Spring Boot进行项目的快速搭建和运行,以及Redisson的分布式处理能力,SeimiCrawler能够帮助开发者迅速响应市场和业务的变化,快速地部署和扩展爬虫应用。 值得一提的是,尽管SeimiCrawler是一个Java框架,但它在设计上也兼顾了与JavaScript环境的兼容性,尤其是通过支持XPath,开发者可以在JavaScript环境中轻松地使用相同的语法来提取和处理HTML文档。 总体来说,SeimiCrawler是一个非常适合Java开发者的爬虫框架,它不仅提供了高效的数据处理能力,还具备了良好的社区支持和文档说明,可以帮助开发者快速地搭建和维护爬虫应用,满足各种复杂的数据抓取需求。"
2019-07-06 上传
SeimiCrawler(Java 爬虫框架)更新 支持在Request对象中,通过header(map)来自定义本次请求的header,以及支持通过seimiCookies来自定义cookies,自定义cookies会直接进入cookiesStore,对同域下第二次请求依然有效 优化默认启动方式,改造cn.wanghaomiao.seimi.boot.Run支持CommandLineParser,可以使用 -c 和-p来传参,其中-c用来指定crawlernames,多个用','分隔,-p指定一个端口,可以选择性的启动一个内嵌的http服务,并开启使用内嵌http接口 maven-compiler-plugin打包插件升级为1.3.0,完善Linux下的脚本,并增加启动配置文件,可以到maven-compiler-plugin主页详细查看 默认下载器改为Apache Httpclient,备用为下载器OkHttp3实现 优化部分代码 demo日志默认全部输出至控制台 SeimiCrawler(Java 爬虫框架)简介 SeimiCrawler是一个敏捷的,独立部署的,支持分布式的Java爬虫框架,希望能在最大程度上降低新手开发一个可用性高且性能不差的爬虫系统的门槛,以及提升开发爬虫系统的开发效率。在SeimiCrawler的世界里,绝大多数人只需关心去写抓取的业务逻辑就够了,其余的Seimi帮你搞定。设计思想上SeimiCrawler受Python的爬虫框架Scrapy启发,同时融合了Java语言本身特点与Spring的特性,并希望在国内更方便且普遍的使用更有效率的XPath解析HTML,所以SeimiCrawler默认的HTML解析器是JsoupXpath(独立扩展项目,非jsoup自带),默认解析提取HTML数据工作均使用XPath来完成(当然,数据处理亦可以自行选择其他解析器)。并结合SeimiAgent彻底完美解决复杂动态页面渲染抓取问题。 SeimiCrawler(Java 爬虫框架)展示   相关阅读 同类推荐:站长常用源码
2019-07-19 上传
SeimiCrawler An agile,powerful,distributed crawler framework. SeimiCrawler的目标是成为Java世界最好用最实用的爬虫框架。简介      SeimiCrawler是一个敏捷的,支持分布式的Java爬虫开发框架,希望能在最大程度上降低新手开发一个可用性高且性能不差的爬虫系统的门槛,以及提升开发爬虫系统的开发效率。在SeimiCrawler的世界里,绝大多数人只需关心去写抓取的业务逻辑就够了,其余的Seimi帮你搞定。设计思想上SeimiCrawler受Python的爬虫框架Scrapy启发很大,同时融合了Java语言本身特点与Spring的特性,并希望在国内更方便且普遍的使用更有效率的XPath解析HTML,所以SeimiCrawler默认的HTML解析器是JsoupXpath,默认解析提取HTML数据工作均使用XPath来完成(当然,数据处理亦可以自行选择其他解析器)。 原理示例基本原理集群原理快速开始 添加maven依赖(已经同步到中央maven库,最新版本参见项目主页):     cn.wanghaomiao     SeimiCrawler     0.1.0 在包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<Object> urls = doc.sel("//a[@class='titlelnk']/@href");             logger.info("{}", urls.size());             for (Object s:urls){                 push(new Request(s.toString(),"getTitle"));             }         } catch (Exception e) {             e.printStackTrace();         }     }     public void getTitle(Response response){         JXDocument doc = response.document();         try {             logger.info("url:{} {}", response.getUrl(), doc.sel("//h1[@class='postTitle']/a/text()|//a[@id='cb_post_title_url']/text()"));             //do something         } catch (Exception e) {             e.printStackTrace();         }     } } 然后随便某个包下添加启动Main函数,启动SeimiCrawler:public class Boot {     public static void main(String[] args){         Seimi s = new Seimi();         s.start("basic");     } } 以上便是一个最简单的爬虫系统开发流程。 更多文档      目前可以参考demo工程中的样例,基本包含了主要的特性用法。更为细致的文档移步SeimiCrawler主页中进一步查看 标签:爬虫