This is an automated email from the ASF dual-hosted git repository. dpol1 pushed a commit to branch refresh in repository https://gitbox.apache.org/repos/asf/stormcrawler-site.git
commit 8aa4f0a6f4233f2575f148bd47ba091e12e24ae6 Merge: becd324 3c6ab7c Author: Davide Polato <[email protected]> AuthorDate: Sun Aug 9 16:24:40 2026 +0200 Merge branch 'main' into refresh docs/{latest => 3.7.0}/architecture.html | 2 +- docs/{latest => 3.7.0}/configuration.html | 340 ++- docs/{latest => 3.7.0}/debugging.html | 2 +- docs/{latest => 3.7.0}/extending.html | 14 +- .../6NUO8FuJNQ2MbkrZ5-J8lKFrp7pRef2rUGIW9g.woff2 | Bin 0 -> 8060 bytes docs/3.7.0/fonts/font-awesome.min.css | 4 + .../3.7.0/fonts/font-awesome/4.7.0/FontAwesome.otf | Bin 0 -> 134808 bytes .../font-awesome/4.7.0/fontawesome-webfont.eot | Bin 0 -> 165742 bytes .../font-awesome/4.7.0/fontawesome-webfont.svg | 2671 ++++++++++++++++++++ .../font-awesome/4.7.0/fontawesome-webfont.ttf | Bin 0 -> 165548 bytes .../font-awesome/4.7.0/fontawesome-webfont.woff | Bin 0 -> 98024 bytes .../font-awesome/4.7.0/fontawesome-webfont.woff2 | Bin 0 -> 77160 bytes docs/3.7.0/fonts/fonts.css | 836 ++++++ ...J5X9T9RW6j9bNVls-hfgvz8JcMofYTYf6D33WsNFH.woff2 | Bin 0 -> 36696 bytes ...RW6j9bNfFIMZhhWnFTyNZIQD1-_P3Dct_NFiQhhYQ.woff2 | Bin 0 -> 18244 bytes ...RW6j9bNfFIMZhhWnFTyNZIQD1-_P3Hct_NFiQhhYQ.woff2 | Bin 0 -> 236972 bytes ...RW6j9bNfFIMZhhWnFTyNZIQD1-_P3Lct_NFiQhhYQ.woff2 | Bin 0 -> 114064 bytes ...RW6j9bNfFIMZhhWnFTyNZIQD1-_P3Pct_NFiQhhYQ.woff2 | Bin 0 -> 14180 bytes ...9T9RW6j9bNfFIMZhhWnFTyNZIQD1-_P3_ct_NFiQg.woff2 | Bin 0 -> 47948 bytes ...RW6j9bNfFIMZhhWnFTyNZIQD1-_P3vct_NFiQhhYQ.woff2 | Bin 0 -> 31940 bytes ...RW6j9bNfFIMZhhWnFTyNZIQD1-_P3zct_NFiQhhYQ.woff2 | Bin 0 -> 32004 bytes ...RW6j9bNfFIMZhhWnFTyNZIQD1-_PwPct_NFiQhhYQ.woff2 | Bin 0 -> 79052 bytes ...MiZpBA-UFUIcVXSCEkx2cmqvXlWqW106FxZCJgvAQ.woff2 | Bin 0 -> 22548 bytes ...MiZpBA-UFUIcVXSCEkx2cmqvXlWqWt06FxZCJgvAQ.woff2 | Bin 0 -> 33076 bytes ...MiZpBA-UFUIcVXSCEkx2cmqvXlWqWtE6FxZCJgvAQ.woff2 | Bin 0 -> 49560 bytes ...MiZpBA-UFUIcVXSCEkx2cmqvXlWqWtU6FxZCJgvAQ.woff2 | Bin 0 -> 1960 bytes ...MiZpBA-UFUIcVXSCEkx2cmqvXlWqWtk6FxZCJgvAQ.woff2 | Bin 0 -> 13620 bytes ...MiZpBA-UFUIcVXSCEkx2cmqvXlWqWu06FxZCJgvAQ.woff2 | Bin 0 -> 14664 bytes ...26MiZpBA-UFUIcVXSCEkx2cmqvXlWqWuU6FxZCJgg.woff2 | Bin 0 -> 45072 bytes ...MiZpBA-UFUIcVXSCEkx2cmqvXlWqWuk6FxZCJgvAQ.woff2 | Bin 0 -> 19196 bytes ...MiZpBA-UFUIcVXSCEkx2cmqvXlWqWvU6FxZCJgvAQ.woff2 | Bin 0 -> 28048 bytes ...MiZpBA-UFUIcVXSCEkx2cmqvXlWqWxU6FxZCJgvAQ.woff2 | Bin 0 -> 51112 bytes ...Gs126MiZpBA-UvWbX2vVnXBbObj2OVTS-mu0SC55I.woff2 | Bin 0 -> 42964 bytes docs/3.7.0/images/stormcrawler.drawio | 238 ++ docs/3.7.0/images/stormcrawler.drawio.jpg | Bin 0 -> 172493 bytes docs/3.7.0/images/stormcrawler.drawio.pdf | Bin 0 -> 50189 bytes docs/{latest => 3.7.0}/index.html | 526 +++- docs/{latest => 3.7.0}/internals.html | 159 +- docs/{latest => 3.7.0}/overview.html | 2 +- docs/{latest => 3.7.0}/powered-by.html | 5 +- docs/{latest => 3.7.0}/presentations.html | 2 +- docs/{latest => 3.7.0}/quick-start.html | 16 +- docs/index.html | 19 +- docs/latest/architecture.html | 2 +- docs/latest/configuration.html | 340 ++- docs/latest/debugging.html | 2 +- docs/latest/extending.html | 14 +- docs/latest/index.html | 526 +++- docs/latest/internals.html | 159 +- docs/latest/overview.html | 2 +- docs/latest/powered-by.html | 5 +- docs/latest/presentations.html | 2 +- docs/latest/quick-start.html | 16 +- download/index.html | 16 +- 54 files changed, 5432 insertions(+), 488 deletions(-) diff --cc docs/index.html index 52ac21e,13348ed..50ca156 --- a/docs/index.html +++ b/docs/index.html @@@ -2,133 -2,172 +2,144 @@@ layout: default slug: documentation title: Documentation of Apache StormCrawler +eyebrow: Documentation +heading: Documentation +description: User guides, versioned reference documentation and the API Javadoc for Apache StormCrawler. --- -<div class="row row-col"> - <h1>Documentation</h1> - - <p> - This page provides documentation resources for Apache StormCrawler - </p> - - <h2>User Documentation</h2> - - <p> - Additional documentation, including configuration guides and usage examples, - is available in the versioned documentation pages: - </p> - - <ul> - <li> - <a href="/docs/latest/index.html" target="_blank"> - <b>latest (3.7.0)</b> - </a> - </li> - <li> - <a href="/docs/3.7.0/index.html" target="_blank"> - <b>3.7.0</b> - </a> - </li> - <li> - <a href="/docs/3.6.0/index.html" target="_blank"> - <b>3.6.0</b> - </a> - </li> - <li> - <a href="/docs/3.5.1/index.html" target="_blank"> - <b>3.5.1</b> - </a> - </li> - </ul> - - </p> - - <h2>Javadoc</h2> - - <p> - The full API reference for Apache StormCrawler Javadoc.io: - </p> - - <ul> - <li> - <a href="https://javadoc.io/doc/org.apache.stormcrawler/stormcrawler-core/3.7.0/index.htm" target="_blank" - rel="noopener"> - <b>3.7.0 (current)</b> - </a> - - </li> - <li> - <a href="https://javadoc.io/doc/org.apache.stormcrawler/stormcrawler-core/3.6.0/index.htm" target="_blank" - rel="noopener"> - <b>3.6.0</b> - </a> - - </li> - <li> - <a href="https://javadoc.io/doc/org.apache.stormcrawler/stormcrawler-core/3.5.1/index.htm" target="_blank" - rel="noopener"> - <b>3.5.1</b> - </a> - - </li> - <li> - <a href="https://javadoc.io/doc/org.apache.stormcrawler/stormcrawler-core/3.5.0/index.htm" target="_blank" - rel="noopener"> - <b>3.5.0</b> - </a> - - </li> - <li> - <a href="https://javadoc.io/doc/org.apache.stormcrawler/stormcrawler-core/3.4.0/index.htm" target="_blank" - rel="noopener"> - <b>3.4.0</b> - </a> - - </li> - </ul> - - <h2>FAQ</h2> - <br> - - <p><strong>Q: Topologies? Spouts? Bolts? I’m confused!</strong></p> - <p> - A: If you’re new to these concepts, it’s worth starting with - <a href="http://storm.apache.org/" target="_blank">Apache Storm®</a>. The - <a href="http://storm.apache.org/releases/current/Tutorial.html" target="_blank">tutorial</a> - and <a href="http://storm.apache.org/documentation/Concepts.html" target="_blank">concept pages</a> - provide a good introduction. In addition, you can have a look at our own documentation, which provides a quick overview. - </p> - - <p><strong>Q: Do I need an Apache Storm® cluster to run StormCrawler?</strong></p> - <p> - A: Not necessarily. StormCrawler can run in local mode, using Storm libraries as dependencies. - However, installing Storm in pseudo-distributed mode is useful if you want to use its UI - to monitor topologies. - </p> - - <p><strong>Q: Why use Apache Storm®?</strong></p> - <p> - A: Apache Storm® is a robust, fault-tolerant framework for distributed stream processing. - It guarantees data processing, is simple to understand, actively maintained, and licensed under ASF 2.0. - </p> - - <p id="howfast"><strong>Q: How fast is StormCrawler?</strong></p> - <p> - A: Speed depends on the diversity of hostnames, your politeness settings and execution environment. For example, - if you have 1 million URLs from the same host and set a 1-second delay between requests, - you can fetch a maximum of ~86,400 pages per day. Actual performance will vary depending - on network speed, document size, parsing, and indexing overhead. This is true for any crawler. - </p> - - <p><strong>Q: Why choose StormCrawler over Apache Nutch?</strong></p> - <p> - A: StormCrawler processes URLs as a continuous stream, indexing them as they are fetched. - Nutch uses batch steps, which can slow down as the crawl grows and resources are unevenly used. - StormCrawler can handle streaming URLs or low-latency use cases efficiently. It is also more modern, modular, - and actively maintained, though Nutch excels in advanced scoring and deduplication. - </p> - <p> - Tutorials comparing both are available here: - <a href="http://digitalpebble.blogspot.co.uk/2015/09/index-web-with-aws-cloudsearch.html" target="_blank">Nutch & SC with - CloudSearch</a> - and a benchmark study: - <a href="http://digitalpebble.blogspot.co.uk/2017/01/the-battle-of-crawlers-apache-nutch-vs.html" target="_blank">Crawlers - benchmark</a>. - </p> - - <p><strong>Q: Do I need external storage? Which type?</strong></p> - <p> - A: Yes, StormCrawler needs storage for URLs. The type depends on your crawl: - </p> - <ul> - <li> - <strong>Non-recursive crawls:</strong> Messaging queues like - <a href="https://www.rabbitmq.com/" target="_blank">RabbitMQ</a>, - <a href="https://aws.amazon.com/sqs/" target="_blank">AWS SQS</a>, or - <a href="http://kafka.apache.org" target="_blank">Apache Kafka®</a> work well. Use a Spout implementation to read from the - queue. - </li> - <li> - <strong>Recursive crawls:</strong> Use storage with unique keys (e.g., a database) - to avoid duplicate URLs. StormCrawler provides external modules for - <a href="https://github.com/apache/stormcrawler/tree/master/external" target="_blank">Apache SOLR, OpenSearch, SQL</a>. - </li> - </ul> - <p> - The modularity of StormCrawler lets you plug in almost any storage backend. - </p> +<h2>User Documentation</h2> + +<p> + Additional documentation, including configuration guides and usage examples, + is available in the versioned documentation pages: +</p> + +<div class="version-cards"> + <div class="card version-card card--highlight"> + <div class="version-card__head"> - <span class="version-card__name">3.6.0</span> ++ <span class="version-card__name">3.7.0</span> + <span class="badge">Current</span> + </div> + <p class="card__copy">The latest release, also served as <code>docs/latest</code>.</p> + <div class="chip-cluster"> + <a class="chip" href="/docs/latest/index.html" target="_blank">Read the docs →</a> - <a class="chip" href="/docs/3.6.0/index.html" target="_blank">Pinned 3.6.0 →</a> ++ <a class="chip" href="/docs/3.7.0/index.html" target="_blank">Pinned 3.7.0 →</a> + </div> + </div> + <div class="card version-card"> + <div class="version-card__head"> - <span class="version-card__name">3.5.1</span> ++ <span class="version-card__name">3.6.0</span> + <span class="badge badge--muted">Previous</span> + </div> + <p class="card__copy">Documentation for the previous release.</p> ++ <div class="chip-cluster"> ++ <a class="chip" href="/docs/3.6.0/index.html" target="_blank">Read the docs →</a> ++ </div> ++ </div> ++ <div class="card version-card"> ++ <div class="version-card__head"> ++ <span class="version-card__name">3.5.1</span> ++ <span class="badge badge--muted">Older</span> ++ </div> ++ <p class="card__copy">Documentation for an older release.</p> + <div class="chip-cluster"> + <a class="chip" href="/docs/3.5.1/index.html" target="_blank">Read the docs →</a> + </div> + </div> +</div> - <p><strong>Q: Is StormCrawler polite?</strong></p> - <p> - A: Yes. It respects the <a href="http://www.robotstxt.org/" target="_blank">robots.txt</a> protocol - and can be configured with a politness dely between requests to the same host or domain. - </p> +<h2>Javadoc</h2> - <p><strong>Q: How do I know when a crawl is finished?</strong></p> - <p> - A: Storm topologies run continuously by design, so there is no automatic “finished” state. - You need to monitor progress and stop the crawl manually or implement a custom termination mechanism. - </p> +<p> + The full API reference for Apache StormCrawler Javadoc.io: +</p> +<div class="chip-cluster" style="margin-bottom:1.25rem;"> - <a class="chip" href="https://javadoc.io/doc/org.apache.stormcrawler/stormcrawler-core/3.6.0/index.htm" target="_blank" rel="noopener">3.6.0 (current) <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" aria-hidden="true"><path d="M7 17 17 7M9 7h8v8"/></svg></a> ++ <a class="chip" href="https://javadoc.io/doc/org.apache.stormcrawler/stormcrawler-core/3.7.0/index.htm" target="_blank" rel="noopener">3.7.0 (current) <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" aria-hidden="true"><path d="M7 17 17 7M9 7h8v8"/></svg></a> ++ <a class="chip" href="https://javadoc.io/doc/org.apache.stormcrawler/stormcrawler-core/3.6.0/index.htm" target="_blank" rel="noopener">3.6.0 <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" aria-hidden="true"><path d="M7 17 17 7M9 7h8v8"/></svg></a> + <a class="chip" href="https://javadoc.io/doc/org.apache.stormcrawler/stormcrawler-core/3.5.1/index.htm" target="_blank" rel="noopener">3.5.1 <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" aria-hidden="true"><path d="M7 17 17 7M9 7h8v8"/></svg></a> + <a class="chip" href="https://javadoc.io/doc/org.apache.stormcrawler/stormcrawler-core/3.5.0/index.htm" target="_blank" rel="noopener">3.5.0 <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" aria-hidden="true"><path d="M7 17 17 7M9 7h8v8"/></svg></a> + <a class="chip" href="https://javadoc.io/doc/org.apache.stormcrawler/stormcrawler-core/3.4.0/index.htm" target="_blank" rel="noopener">3.4.0 <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" aria-hidden="true"><path d="M7 17 17 7M9 7h8v8"/></svg></a> </div> + +<h2>FAQ</h2> + +<p><strong>Q: Topologies? Spouts? Bolts? I’m confused!</strong></p> +<p> + A: If you’re new to these concepts, it’s worth starting with + <a href="http://storm.apache.org/" target="_blank">Apache Storm®</a>. The + <a href="http://storm.apache.org/releases/current/Tutorial.html" target="_blank">tutorial</a> + and <a href="http://storm.apache.org/documentation/Concepts.html" target="_blank">concept pages</a> + provide a good introduction. In addition, you can have a look at our own documentation, which provides a quick overview. +</p> + +<p><strong>Q: Do I need an Apache Storm® cluster to run StormCrawler?</strong></p> +<p> + A: Not necessarily. StormCrawler can run in local mode, using Storm libraries as dependencies. + However, installing Storm in pseudo-distributed mode is useful if you want to use its UI + to monitor topologies. +</p> + +<p><strong>Q: Why use Apache Storm®?</strong></p> +<p> + A: Apache Storm® is a robust, fault-tolerant framework for distributed stream processing. + It guarantees data processing, is simple to understand, actively maintained, and licensed under ASF 2.0. +</p> + +<p id="howfast"><strong>Q: How fast is StormCrawler?</strong></p> +<p> + A: Speed depends on the diversity of hostnames, your politeness settings and execution environment. For example, + if you have 1 million URLs from the same host and set a 1-second delay between requests, + you can fetch a maximum of ~86,400 pages per day. Actual performance will vary depending + on network speed, document size, parsing, and indexing overhead. This is true for any crawler. +</p> + +<p><strong>Q: Why choose StormCrawler over Apache Nutch?</strong></p> +<p> + A: StormCrawler processes URLs as a continuous stream, indexing them as they are fetched. + Nutch uses batch steps, which can slow down as the crawl grows and resources are unevenly used. + StormCrawler can handle streaming URLs or low-latency use cases efficiently. It is also more modern, modular, + and actively maintained, though Nutch excels in advanced scoring and deduplication. +</p> +<p> + Tutorials comparing both are available here: + <a href="http://digitalpebble.blogspot.co.uk/2015/09/index-web-with-aws-cloudsearch.html" target="_blank">Nutch & SC with + CloudSearch</a> + and a benchmark study: + <a href="http://digitalpebble.blogspot.co.uk/2017/01/the-battle-of-crawlers-apache-nutch-vs.html" target="_blank">Crawlers + benchmark</a>. +</p> + +<p><strong>Q: Do I need external storage? Which type?</strong></p> +<p> + A: Yes, StormCrawler needs storage for URLs. The type depends on your crawl: +</p> +<ul> + <li> + <strong>Non-recursive crawls:</strong> Messaging queues like + <a href="https://www.rabbitmq.com/" target="_blank">RabbitMQ</a>, + <a href="https://aws.amazon.com/sqs/" target="_blank">AWS SQS</a>, or + <a href="http://kafka.apache.org" target="_blank">Apache Kafka®</a> work well. Use a Spout implementation to read from the + queue. + </li> + <li> + <strong>Recursive crawls:</strong> Use storage with unique keys (e.g., a database) + to avoid duplicate URLs. StormCrawler provides external modules for + <a href="https://github.com/apache/stormcrawler/tree/master/external" target="_blank">Apache SOLR, OpenSearch, SQL</a>. + </li> +</ul> +<p> + The modularity of StormCrawler lets you plug in almost any storage backend. +</p> + +<p><strong>Q: Is StormCrawler polite?</strong></p> +<p> + A: Yes. It respects the <a href="http://www.robotstxt.org/" target="_blank">robots.txt</a> protocol + and can be configured with a politness dely between requests to the same host or domain. +</p> + +<p><strong>Q: How do I know when a crawl is finished?</strong></p> +<p> + A: Storm topologies run continuously by design, so there is no automatic “finished” state. + You need to monitor progress and stop the crawl manually or implement a custom termination mechanism. +</p> diff --cc download/index.html index d9b350b,0be9537..2000893 --- a/download/index.html +++ b/download/index.html @@@ -17,36 -16,35 +17,36 @@@ description: Verified source releases o ours. </p> <p>More information about release signing and verifying signatures can be found <a href="https://www.apache.org/dev/release-signing.html">here</a>.</p> +</div> + +<h2>Downloads</h2> - <h2>Downloads</h2> +<p>StormCrawler™ software is an open source SDK for building low-latency, scalable web crawlers based on Apache + Storm®. You can <a - href="https://www.apache.org/dyn/closer.lua/stormcrawler/stormcrawler-3.6.0/apache-stormcrawler-3.6.0-source-release.tar.gz">download - StormCrawler™ software here</a> (latest release: 3.6.0), or pick individual artifacts below.</p> ++ href="https://www.apache.org/dyn/closer.lua/stormcrawler/stormcrawler-3.7.0/apache-stormcrawler-3.7.0-source-release.tar.gz">download ++ StormCrawler™ software here</a> (latest release: 3.7.0), or pick individual artifacts below.</p> - <p>StormCrawler™ software is an open source SDK for building low-latency, scalable web crawlers based on Apache - Storm®. You can <a - href="https://www.apache.org/dyn/closer.lua/stormcrawler/stormcrawler-3.7.0/apache-stormcrawler-3.7.0-source-release.tar.gz">download - StormCrawler™ software here</a> (latest release: 3.7.0), or pick individual artifacts below.</p> +<div class="release-card"> + <div class="version-card__head"> - <span class="badge">3.6.0</span> - <h3 style="margin:0;">Apache StormCrawler 3.6.0</h3> ++ <span class="badge">3.7.0</span> ++ <h3 style="margin:0;">Apache StormCrawler 3.7.0</h3> + </div> + <p style="margin:.75rem 0 0;">Source release, signed and checksummed:</p> + <div class="chip-cluster"> - <a class="chip" href="https://www.apache.org/dyn/closer.lua/stormcrawler/stormcrawler-3.6.0/apache-stormcrawler-3.6.0-source-release.tar.gz">apache-stormcrawler-3.6.0-source-release.tar.gz →</a> - <a class="chip" href="https://downloads.apache.org/stormcrawler/stormcrawler-3.6.0/apache-stormcrawler-3.6.0-source-release.tar.gz.sha512">sha512 →</a> - <a class="chip" href="https://downloads.apache.org/stormcrawler/stormcrawler-3.6.0/apache-stormcrawler-3.6.0-source-release.tar.gz.asc">asc →</a> ++ <a class="chip" href="https://www.apache.org/dyn/closer.lua/stormcrawler/stormcrawler-3.7.0/apache-stormcrawler-3.7.0-source-release.tar.gz">apache-stormcrawler-3.7.0-source-release.tar.gz →</a> ++ <a class="chip" href="https://downloads.apache.org/stormcrawler/stormcrawler-3.7.0/apache-stormcrawler-3.7.0-source-release.tar.gz.sha512">sha512 →</a> ++ <a class="chip" href="https://downloads.apache.org/stormcrawler/stormcrawler-3.7.0/apache-stormcrawler-3.7.0-source-release.tar.gz.asc">asc →</a> + <a class="chip" href="https://downloads.apache.org/stormcrawler/KEYS">KEYS →</a> - <a class="chip" href="https://github.com/apache/stormcrawler/releases/tag/stormcrawler-3.6.0" target="_blank" rel="noopener">Release notes <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" aria-hidden="true"><path d="M7 17 17 7M9 7h8v8"/></svg></a> ++ <a class="chip" href="https://github.com/apache/stormcrawler/releases/tag/stormcrawler-3.7.0" target="_blank" rel="noopener">Release notes <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" aria-hidden="true"><path d="M7 17 17 7M9 7h8v8"/></svg></a> + <a class="chip" href="https://search.maven.org/search?q=org.apache.stormcrawler" target="_blank" rel="noopener">Maven Central <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" aria-hidden="true"><path d="M7 17 17 7M9 7h8v8"/></svg></a> + </div> +</div> - <h3>Apache StormCrawler 3.7.0</h3> - <br/> - <ul> - <li><a href="https://github.com/apache/stormcrawler/releases/tag/stormcrawler-3.7.0">Release Notes</a></li> - </ul> - <h4>Source</h4> - <ul> - <li> - <a href="https://www.apache.org/dyn/closer.lua/stormcrawler/stormcrawler-3.7.0/apache-stormcrawler-3.7.0-source-release.tar.gz">apache-stormcrawler-3.7.0-source-release.tar.gz</a> - | <a - href="https://downloads.apache.org/stormcrawler/stormcrawler-3.7.0/apache-stormcrawler-3.7.0-source-release.tar.gz.sha512">SHA512</a> - | <a - href="https://downloads.apache.org/stormcrawler/stormcrawler-3.7.0/apache-stormcrawler-3.7.0-source-release.tar.gz.asc">ASC</a> - </li> - </ul> - <h4>Maven</h4> - <p>Artifacts are available via <a href="https://search.maven.org/search?q=org.apache.stormcrawler">Maven - Central</a></p> +<h3>Maven</h3> +<p>Artifacts are available via <a href="https://search.maven.org/search?q=org.apache.stormcrawler">Maven + Central</a></p> - <h3>Older Releases</h3> +<h3>Older Releases</h3> - <p>Previous <b>non</b>-ASF releases can be found <a - href="https://search.maven.org/search?q=g:com.digitalpebble.stormcrawler">here</a>.</p> -</div> +<p>Previous <b>non</b>-ASF releases can be found <a + href="https://search.maven.org/search?q=g:com.digitalpebble.stormcrawler">here</a>.</p>
