gpt4 book ai didi

delphi - 爬虫url队列还是hash列表?

转载 作者:行者123 更新时间:2023-12-03 14:59:41 25 4
gpt4 key购买 nike

我正在重写我之前编写的 Delphi 6 站点映射器应用程序的蜘蛛/爬虫部分。该应用程序抓取单个网站。

我需要管理这两个方面:

  1. 要扫描的网址队列,先进先出。
  2. 扫描的 URL 列表,以便新页面中的链接如果已被访问过,则不会添加到队列中。需要搜索此列表。

以前这些是分别使用 TList 和 StringList 完成的。显然,在具有数千个链接的网站上,这些性能会下降。

我的问题是,这些队列/列表应该使用什么来确保最佳性能?我对哈希没什么经验。

最佳答案

恕我直言,哈希值将是此类列表的最佳候选。

在 Delphi 6 中,您可以使用 IniFiles 单元中提供的 THashedStringList 类。它比 TStringList 更快。

请注意,如果您使用排序的 TStringList,您可以使用更快的二分搜索,速度足以满足您的目的。

要获得更完整的内容,您可以查看这些开源库:

  • TSynBigTableMetaData存储与元数据字段关联的任何数量的数据(在您的情况下是 HTML 页面) - 您有元数据字段的索引,因此添加和检索会很快;
  • 名称使用哈希值的动态数组可以在 Delphi 6 中使用 TDynArrayHashed .

更新:

只是对 URI 进行排序的一个技巧,如果您使用排序的 TStringList:您最好使用向后排序函数,即从字符串末尾而不是开头开始比较 URI 文本,因为在 URI 中,更改是在后缀而不是前缀中。您将使排序/二分搜索更快。

关于delphi - 爬虫url队列还是hash列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6859355/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com