请选择 进入手机版 | 继续访问电脑版
  • 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Slit: 扩展性高,轻的开源爬虫框架Slit

原作者: [db:作者] 来自: 网络 收藏 邀请

开源软件名称:

Slit

开源软件地址:

https://gitee.com/qifeifei/Slit

开源软件介绍:

Slit

开源爬虫框架Slit

1, Slit的特点

1.1,较好的扩展性,不同模块之间解耦合,非常适合二次开发自己的爬虫框架。

1.2,使用上配置简单,容易上手,可配置是否带浏览器模拟真实抓取,项目非常轻。

1.3,可配置多线程,定义爬取深度,自动过滤重复url。

1.4,相比较传统爬虫,Slit能够解决动态页面(包含ajax局部页面),cookie信息,登录等问题。

2, Slit项目一共有3个主要模块:

2.1,Fetcher模块,主要负责从url等待队列头取url,然后去下载页面,把整个页面结果放入已经下载页面队列。

2.2,Analyzer模块,主要负责从已经下载页面,提取想要的结果,放入抓取结果队列,另外再找出本页面上的其他连接,放入url等待队列。

2.3,Store模块,主要负责从抓取的结果队列中取出结果,然后根据用户自定义来怎么处理这些结果。

3, Slit的使用

3.1,定义一个类来继承AbstractNodeFilter,需要实现方法accept(),此方法用来提取页面上的节点。不同的用户可能想提取的结果都不同,这里的提取内容开放给用户自己定义。

3.2,定义一个类来继承AbstractFileStore,需要实现方法processResultNode(),此方法就是对抓取结果的处理。

3.3,启动Slit项目,

Config config = new Config();

config.setStartUrlList(Arrays.asList(“https://git.oschina.net/explore/recommend”)); // 需要爬取的url列表

config.setNodeFilterClass(MyNodeFilter.class); // 步骤一中自定义的类

config.setFileStoreClass(MyFileStore.class); // 步骤二中自定义的类

InitSlit slit = new InitSlit(config);

slit.start(); // 启动, 可以设置不同模块线程数,详见类config

4, Slit的使用(带浏览器爬)

4.1,定义一个类来继承AbstractNodeFilter,需要实现方法accept(),此方法用来提取页面上的节点。不同的用户可能想提取的结果都不同,这里的提取内容开放给用户自己定义。

4.2,定义一个类来继承AbstractFileStore,需要实现方法processResultNode(),此方法就是对抓取结果的处理。

4.3,定义一个类来继承AbstractBrowserAction,需要实现方法userBrowserAction(),此方法是定义浏览器爬取行为的。

4.4,使用chrome浏览器,下载chrome对应系统的webDriver驱动文件。(下载地址:http://chromedriver.storage.googleapis.com/index.html)

4.5, 启动Slit项目,Config config = new Config();

config.setNodeFilterClass(MyBrowserNodeFilter.class); // 步骤一中定义的类

config.setFileStoreClass(MyBrowserFileStore.class); // 步骤二中定义的类

config.setInBrowser(true); // 设置浏览器为true

config.setBrowserAction(MyBrowserAction.class); // 步骤三中定义的类

config.setBrowserDriverPath(“/”); // chrome对应系统的webDriver文件的路径

InitSlit init = new InitSlit(config);

init.start();

5, Slit使用到的技术

5.1,Slit主要依赖两个jar包,“org.htmlparser:htmlparser:2.1“ 和”org.seleniumhq.selenium:selenium-java:2.45.0“ ,其他还包含一些log日志包等。

5.2,不同模块之间通过线程安全非阻塞队列协同工作。

6, Slit使用到的jar包列表,在本项目的src/test/lib下都已经包含了这些jar包 :

compile "commons-lang:commons-lang:2.6"

compile "org.htmlparser:htmlparser:2.1"

compile "org.seleniumhq.selenium:selenium-java:2.45.0"

compile "ch.qos.logback:logback-classic:1.1.3"

compile "org.codehaus.groovy:groovy:2.4.3"

compile "org.slf4j:slf4j-api:1.7.12"

compile "org.slf4j:jcl-over-slf4j:1.7.12"

7, Slit的demo在test中可见两种不同的启动方式,可自行参考,更多问题可加入群共同讨论,群号:213109134


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap