0

我需要抓取一个具有基本文件夹系统的网站,其中的文件夹标有关键字 - 一些文件夹包含文本文件。我需要扫描所有页面(文件夹)并检查指向新文件夹的链接,记录关键字和文件。我的主要问题更抽象:如果有一个包含嵌套文件夹和未知“深度”的目录,那么迭代所有这些文件夹的最pythonc 方式是什么。[如果知道“深度”,那将是一个非常简单的 for 循环)。想法非常受欢迎。

4

2 回答 2

2

递归通常是最简单的方法。

但是,如果有人创建一个带有指向自身或父级的符号链接的目录,则可能会在一段时间后给您一个 StackOverflowError。

于 2012-05-12T09:09:28.173 回答
2

这是一个简单的蜘蛛算法。它使用一个双端队列来处理要处理的文档和一组已处理的文档:

active = deque()
seen = set()

active.append(first document)

while active is not empty:
    document = active.popleft()
    if document in seen:
        continue

    # do stuff with the document -- e.g. index keywords

    seen.add(document)
    for each link in the document:
         active.append(link)

请注意,这是迭代的,因此可以与任意深度树一起使用。

于 2012-05-12T09:34:08.230 回答