根据 StormCrawler 中的优先级抓取 URL
crawl URLs based on their priorities in StormCrawler
我正在开发一个基于 StormCrawler 项目的爬虫。我需要根据优先级抓取 URL。例如,我有两种优先级:HIGH、LOW。我想在抓取低优先级网址之前尽快抓取高优先级网址。我需要一种方法来处理爬虫中的上述问题。我如何在 Apache Storm 和 StormCrawler 中处理此要求?
使用 Elasticsearch 作为后端,您可以配置 spout 以根据您想要的任何字段对存储桶中的 URL 进行排序。字段 are sorted by ascending order 因此您应该在元数据中存储一个值,0 表示高,1 表示低,并在 conf es.status.bucket.sort.field 中指定密钥名称。 (请注意,HIGH 和 LOW 作为值也适用)。
ES archetype 中的默认值为
es.status.bucket.sort.field:
- "nextFetchDate"
- "url"
您应该保留 nextFetchDate,这样具有相同优先级的 URL 将按它排序,例如
es.status.bucket.sort.field:
- "metadata.priority"
- "nextFetchDate"
- "url"
请注意,这不会影响存储桶的排序方式,只会影响存储桶中的顺序。
我正在开发一个基于 StormCrawler 项目的爬虫。我需要根据优先级抓取 URL。例如,我有两种优先级:HIGH、LOW。我想在抓取低优先级网址之前尽快抓取高优先级网址。我需要一种方法来处理爬虫中的上述问题。我如何在 Apache Storm 和 StormCrawler 中处理此要求?
使用 Elasticsearch 作为后端,您可以配置 spout 以根据您想要的任何字段对存储桶中的 URL 进行排序。字段 are sorted by ascending order 因此您应该在元数据中存储一个值,0 表示高,1 表示低,并在 conf es.status.bucket.sort.field 中指定密钥名称。 (请注意,HIGH 和 LOW 作为值也适用)。
ES archetype 中的默认值为
es.status.bucket.sort.field:
- "nextFetchDate"
- "url"
您应该保留 nextFetchDate,这样具有相同优先级的 URL 将按它排序,例如
es.status.bucket.sort.field:
- "metadata.priority"
- "nextFetchDate"
- "url"
请注意,这不会影响存储桶的排序方式,只会影响存储桶中的顺序。