Web 在抓取网站时如何确定循环的停止点

Web 在抓取网站时如何确定循环的停止点,web,web-crawler,Web,Web Crawler,我的程序目前正在浏览一个收集信息的网站页面。当我访问了所有网站页面时,如何设置循环结束 有没有办法知道任何网站的网页数量? 或者我是否比较了我访问过的页面块(如10),如果再次按该顺序检查页面,我知道它会重复 我确信必须有更好的方法知道何时停止。您可能希望使用对网站进行预处理,并且只访问站点地图中包含的网页。跟踪访问的网页(可能将访问的URL保留在一组中),并且在尝试扫描新网页时,检查是否已访问该网页 检查这两种算法。将站点视为一个图形 哪些节点是页面,哪些边/弧是链接 从一页到另一页。所以

我的程序目前正在浏览一个收集信息的网站页面。当我访问了所有网站页面时,如何设置循环结束

有没有办法知道任何网站的网页数量? 或者我是否比较了我访问过的页面块(如10),如果再次按该顺序检查页面,我知道它会重复


我确信必须有更好的方法知道何时停止。

您可能希望使用对网站进行预处理,并且只访问站点地图中包含的网页。

跟踪访问的网页(可能将访问的URL保留在一组中),并且在尝试扫描新网页时,检查是否已访问该网页

检查这两种算法。将站点视为一个图形
哪些节点是页面,哪些边/弧是链接
从一页到另一页。所以两页是相邻的
AB,如果有从a页到B页的链接

然后只需实现这两种算法中的一种
(以您认为更适合您的情况为准)。
它们都有各自的停止条件

在这两种情况下,您的搜索都应该以根开始
通常为
default.ext
index.ext

类似的东西(ext=html、asp、aspx、jsp、php等等)

有没有办法知道任何网站的网页数量

不可以。检查网站所能做的就是发出HTTP GET(或HEAD)请求并检查响应。这将告诉您URI是否是资源的有效标识符,并获得该资源的表示形式。您无法知道哪些请求将指示有效的资源,也无法实际生成所有可能的URI来执行彻底的搜索


充其量,您所能做的就是从一个URI开始,通过检查包含到其他资源的链接的资源,然后跟踪这些链接,找到可以从该URI访问的所有资源。

看看DFS算法。只需添加一个包含您已经访问过的站点的URL的
哈希集。如果站点已在此集中,请跳过它。