StormCrawler 开源项目教程
1. 项目的目录结构及介绍
StormCrawler 项目的目录结构如下:
storm-crawler/
├── core/
│ ├── src/
│ │ ├── main/
│ │ │ ├── java/
│ │ │ │ ├── com/
│ │ │ │ │ ├── digitalpebble/
│ │ │ │ │ │ ├── stormcrawler/
│ │ │ │ │ │ │ ├── bolt/
│ │ │ │ │ │ │ ├── filter/
│ │ │ │ │ │ │ ├── parse/
│ │ │ │ │ │ │ ├── protocol/
│ │ │ │ │ │ │ ├── spout/
│ │ │ │ │ │ │ ├── util/
│ │ │ │ │ │ │ └── ...
│ │ │ │ │ │ └── ...
│ │ │ │ │ └── ...
│ │ │ └── resources/
│ │ │ └── ...
│ │ └── test/
│ │ └── ...
│ └── pom.xml
├── contrib/
│ ├── elasticsearch/
│ ├── solr/
│ └── ...
├── examples/
│ └── ...
├── metrics/
│ └── ...
├── parent/
│ └── ...
├── site/
│ └── ...
├── storm-crawler-core/
│ └── ...
├── storm-crawler-elasticsearch/
│ └── ...
├── storm-crawler-solr/
│ └── ...
├── storm-crawler-tika/
│ └── ...
├── storm-crawler-warc/
│ └── ...
├── storm-crawler-web/
│ └── ...
├── .gitignore
├── .travis.yml
├── LICENSE
├── NOTICE
├── README.md
└── pom.xml
目录结构介绍
core/
: 包含 StormCrawler 的核心组件,如 bolts、filters、parsers 等。contrib/
: 包含 StormCrawler 的贡献模块,如 Elasticsearch 和 Solr 的集成。examples/
: 包含 StormCrawler 的示例配置和拓扑。metrics/
: 包含 StormCrawler 的度量相关组件。parent/
: 包含项目的父 POM 文件。site/
: 包含 StormCrawler 的文档和网站资源。storm-crawler-core/
: 包含 StormCrawler 的核心库。storm-crawler-elasticsearch/
: 包含与 Elasticsearch 集成的库。storm-crawler-solr/
: 包含与 Solr 集成的库。storm-crawler-tika/
: 包含与 Apache Tika 集成的库。storm-crawler-warc/
: 包含与 WARC 文件处理的库。storm-crawler-web/
: 包含 StormCrawler 的 Web 界面。.gitignore
: Git 忽略文件。.travis.yml
: Travis CI 配置文件。LICENSE
: 项目许可证。NOTICE
: 项目通知文件。README.md
: 项目自述文件。pom.xml
: Maven 项目对象模型文件。
2. 项目的启动文件介绍
StormCrawler 的启动文件通常是拓扑文件,位于 examples/
目录下。以下是一个示例拓扑文件的介绍:
package com.digitalpebble.stormcrawler.example;
import org.apache.storm.Config;
import org.apache.storm.LocalCluster;
import org.apache.storm.StormSubmitter;
import org.apache.storm.topology.TopologyBuilder;
import com.digitalpebble.stormcrawler.bolt.FetcherBolt;
import com.digitalpebble.stormcrawler.bolt.JSoupParserBolt;
import com.digitalpebble.stormcrawler.bolt.URLFilterBolt;
import com.digitalpebble.stormcrawler.spout.MemorySpout;
public class ExampleTopology {
public static void main(String[] args) throws Exception {
TopologyBuilder builder = new TopologyBuilder();