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