在 Nutch 中每个站点爬行一定深度

Crawling a certain depth per site in Nutch

我正在尝试使用 Nutch V1.12 抓取大量网站,虽然抓取网站没有问题,但我无法控制抓取。问题主要在于似乎不可能进行爬网,其中深度是从它到达的每个新主机开始计算的。据我了解,爬行脚本中的一轮被认为是爬行的深度。但这意味着在抓取早期发现的网站比在较晚发现的网站被抓取更多。

有没有办法实现每个站点的抓取深度功能?

The problem mainly lies with that there doesn't seem to be possible to do a crawl where the depth is counted from each new host it reaches.

正确,深​​度是从种子开始计算的,无论 URL 位于特定站点的何处。

As I understand it a round in the crawl-script is considered as depth of the crawl.

没有。深度由 scoring-depth 插件生成,与回合数无关。它们通常是相同的,尤其是在爬网开始时,但不一定。

But this means that sites that are found early in the crawl is crawled more than those sites found later.

是的。深度限制对于我们希望爬行保持在种子边界内的情况很有用。对于超出原始域的抓取,您将获得突出显示的限制。

应该可以修改代码,以便在更改主机或域时重置深度,但这会导致各种问题,例如如果目标 URL 不对应于根怎么办?例如你会得到域。com/path 深度为 0,但如果后者有 link 到 domain.com/,它会得到深度 1,这不直观。

我认为术语深度在 Nutch 中有点含糊或误导。 'step' 会更准确,因为它不会在站点的层次结构中占据任何位置。

我通过更改评分深度插件以在每个新主机上重置来解决这个问题。为了知道哪些主机是新主机,我制作了一个列表,在其中输入所有主机。因此,如果主机不在列表中,我会通过添加新主机然后将深度重置为 0 来更新列表。