分布式网络爬虫greenfinger使用介绍(上篇)
Greenfinger是一款用Java编写的,高性能的,面向扩展的分布式网络爬虫框架,它基于SpringBoot框架,通过一些配置参数,就可以轻松地搭建一个分布式网络爬虫微服务并且可以组建集群。此外,Greenfinger框架还提供了大量丰富的API去定制你的应用系统。
框架特性
- 完美兼容 SpringBoot2.2.0(or later)
- 支持通用型和垂直型爬虫
- 采用深度优先爬取策略
- 设计成多进程高可用的爬虫架构,支持动态水平扩展和负载均衡
- 内置多种负载均衡算法或自定义负载均衡算法
- 支持全量索引和增量索引
- 支持定时任务来更新索引
- 支持多种主流的Http客户端解析技术
- 支持亿级URL去重
- 内置多种条件中断策略或自定义条件中断策略
- 多版本索引查询机制
- jdk8 (or later)
- SpringBoot Framework 2.2.x (or later)
- Redis 3.x (or later)
- PostgreSQL 9.x (or later)
- ElasticSearch 6.x (or later)
说明:
- Redis用来存取集群信息
- PostgreSQL用来存取爬取到的URL信息
- ElasticSearch用来创建索引和提供检索功能
- Git地址:
https://github.com/paganini20... - 目录结构:
├── greenfinger |├── greenfinger-console ||├── pom.xml ||└── src |├── greenfinger-spring-boot-starter ||├── pom.xml ||└── src |├── LICENSE |├── pom.xml |└── README.md
- 软件说明:
- greenfinger-console:
Greenfinger的Web版,独立的SpringBoot应用程序, 自带管理界面,可以新增、修改、启动、停止爬虫任务等, 并提供搜索界面实时查询 - greenfinger-spring-boot-starter:
Greenfinger 核心jar,实现了上述所有的框架特性,对外提供了爬虫管理和搜索等Rest API, 引入jar包,可以定制你自己的系统
- greenfinger-console:
Step2: 执行命令:mvn clean install
Step3: 执行成功后会多出一个目录run, 把此目录移动到你的工作目录(自己指定的目录)下即可
Step4: 运行jar: java -jar greenfinger-console-1.0-RC2.jar --spring.config.location=config/ (命令仅供参考)
- 生成的run目录结构:
├── config |├── application-dev.properties |└── application.properties ├── db |└── crawler.sql ├── greenfinger-console-1.0-RC2.jar ├── lib |├── aggs-matrix-stats-client-6.8.6.jar |├── aspectjweaver-1.9.5.jar |├── chaconne-spring-boot-starter-1.0-RC2.jar |├── checker-compat-qual-2.5.5.jar |├── classmate-1.5.1.jar |├── commons-codec-1.13.jar |├── commons-io-2.6.jar |├── ... └── logs └── atlantis
- 参考配置:
greenfinger-console界面用的是freemarker,目前有两个配置文件,application.properties和application-dev.properties
application.properties 配置,主要存放一下全局配置:
spring.application.name=greenfinger-console
spring.application.cluster.name=greenfinger-console-cluster#Freemarker Configuration
spring.freemarker.enabled=true
spring.freemarker.suffix=.ftl
spring.freemarker.cache=false
spring.freemarker.charset=UTF-8
spring.freemarker.template-loader-path=classpath:/META-INF/templates/
spring.freemarker.expose-request-attributes=true
spring.freemarker.expose-session-attributes=true
spring.freemarker.setting.number_format=#
spring.freemarker.setting.locale=en_US
spring.freemarker.setting.url_escaping_charset=UTF-8server.port=21212
server.servlet.context-path=/atlantis/greenfingerspring.profiles.active=dev
application-dev.properties 配置:
#Jdbc Configuration
spring.datasource.jdbcUrl=jdbc:postgresql://localhost:5432/db_webanchor
spring.datasource.username=fengy
spring.datasource.password=123456
spring.datasource.driverClassName=org.postgresql.Driver#Redis Configuration
spring.redis.host=localhost
spring.redis.port=6379
spring.redis.password=123456
spring.redis.messager.pubsub.channel=greenfinger-console-messager-pubsub#Vortex Configuration
atlantis.framework.vortex.bufferzone.collectionName=MyGarden
atlantis.framework.vortex.bufferzone.pullSize=100#Elasticsearch Configuration
spring.data.elasticsearch.cluster-name=es
spring.data.elasticsearch.cluster-nodes=localhost:9300
spring.data.elasticsearch.repositories.enabled=true
spring.data.elasticsearch.properties.transport.tcp.connect_timeout=60s#Chaconne Configuration
#atlantis.framework.chaconne.producer.location=http://localhost:6543
#atlantis.framework.chaconne.mail.host=smtp.your_company.com
#atlantis.framework.chaconne.mail.username=your_email@your_company.com
#atlantis.framework.chaconne.mail.password=0123456789
#atlantis.framework.chaconne.mail.default-encoding=UTF-8#webcrawler.pagesource.selenium.webdriverExecutionPath=D:\\software\\chromedriver_win32\\chromedriver.exe#logging.level.indi.atlantis.framework.greenfinger=INFO
说明:
application-dev.properties配置了greenfinger依赖的一些外部资源,默认情况,greenfinger将爬取到的链接信息存储在PostgesSQL,当然,你也可以存储在其他地方(比如Nosql数据库或文件格式),前面说过,greenfinger是面向扩展的网络爬虫,它提供了丰富的API去做扩展,我会在后面关于讲述greenfinger实现原理一文中详细讲解。
上述配置中的地址信息等,你要根据自己的情况做修改
注意:在jdk8下,启动greenfinger-console可能会报错(提示你jdk版本过低),所以你可能需要用jdk11的环境,本人在jdk11下可以运行成功,其他版本暂未试过。
如何自定义你的爬虫应用程序? Step1: 添加 maven:
com.github.paganini2008.atlantis
greenfinger-spring-boot-starter
1.0-RC2
Step2: 参考代码:
@EnableGreenFingerServer
@SpringBootApplication
public class GreenFingerServerConsoleMain {public static void main(String[] args) {
SpringApplication.run(GreenFingerServerConsoleMain.class, args);
}
}
Step3: 参考配置:
spring.application.name=cool-crawler
spring.application.cluster.name=cool-crawler-cluster#Jdbc Configuration
spring.datasource.jdbcUrl=jdbc:postgresql://localhost:5432/db_webanchor
spring.datasource.username=fengy
spring.datasource.password=123456
spring.datasource.driverClassName=org.postgresql.Driver#Redis Configuration
spring.redis.host=localhost
spring.redis.port=6379
spring.redis.password=123456
spring.redis.messager.pubsub.channel=greenfinger-console-messager-pubsub#Vortex Configuration
atlantis.framework.vortex.bufferzone.collectionName=MyGarden
atlantis.framework.vortex.bufferzone.pullSize=100#Elasticsearch Configuration
spring.data.elasticsearch.cluster-name=es
spring.data.elasticsearch.cluster-nodes=localhost:9300
spring.data.elasticsearch.repositories.enabled=true
spring.data.elasticsearch.properties.transport.tcp.connect_timeout=60s#Chaconne Configuration
#atlantis.framework.chaconne.producer.location=http://localhost:6543
#atlantis.framework.chaconne.mail.host=smtp.your_company.com
#atlantis.framework.chaconne.mail.username=your_email@your_company.com
#atlantis.framework.chaconne.mail.password=0123456789
#atlantis.framework.chaconne.mail.default-encoding=UTF-8#webcrawler.pagesource.selenium.webdriverExecutionPath=D:\\software\\chromedriver_win32\\chromedriver.exe#logging.level.indi.atlantis.framework.greenfinger=INFO
上述配置你可以根据自己的情况做修改
Greenfinger-Console 使用介绍:
- 首先,说一下目录和资源概念:
在Greenfinger框架中,对于每一个目标网站(待爬取的网站),都被称之为Catalog(目录),而对于每一个从它上面爬取下来的URL, 则代表为一个Resource(资源) - 目前Greenfinger的Web版界面还在持续改进中,所以看上去比较朴素
- 查看目录列表
文章图片
操作说明:
- 【Edit】 编辑目录
- 【Delete】删除目录(包括目录下的资源和索引)
- 【Clean】 清理目录(包括目录下的资源和索引,但目录还在,版本号归 0)
- 【Rebuild】重构目录(即开启一个爬虫,重新爬取该目录,并建索引,版本号递增)
- 【Update】更新目录(即开启一个爬虫,接着最近的一次爬取地址继续爬取和更新目录,并建索引,版本号不变)
当爬虫运行的时候,你还可以: - 【Stop】停止爬虫运行
- 【Realtime】监控爬虫运行统计等
- 新建或保存目录:
文章图片
说明: - Name: 目录名称
- Cat: 分类名称
- URL: 初始地址
- Page Encoding: 页面编码
- Path Pattern: URL匹配模式,可以多个,逗号分隔
- Excluded Path Pattern: 排除的URL匹配模式,可以多个,逗号分隔
- Max Fetch Size: 最大爬取的链接数量(默认100000)
- Duration: 爬虫的运行时间,输入毫秒值(默认20分钟),即超过此时间,爬虫就自动结束爬取工作
- 监控爬虫运行情况:
文章图片
- 爬虫一边在爬,你也可以实时地用关键字搜索:
文章图片
- 不输关键字,则查询全部:
文章图片
推荐阅读
- parallels|parallels desktop 解决网络初始化失败问题
- 猎杀IP
- 自媒体形势分析
- 数学大作战
- Python爬虫|Python爬虫 --- 1.4 正则表达式(re库)
- 2018.03.18
- 星期天的下午茶(一)
- 08黑龙江迟淑荣弯柳树网络学院第五期学习赵宗瑞老师主讲的(传统文化与身心健康)教育体系心得体会
- 爬虫数据处理HTML转义字符
- 三国谋略22(找准你的定位)