我需要抓一个具有基本文件夹系统的网站,其中包含带有关键字的文件夹 - 其中一些文件夹包含文本文件。我需要扫描所有页面(文件夹)并检查新文件夹的链接,记录关键字和文件。我的主要问题是更抽象:如果有一个嵌套文件夹和未知“深度”的目录,那么迭代所有这些文件的pythonc方法是什么。 [如果“深度”是已知的,那么循环将非常简单)。想法很受欢迎。
答案 0 :(得分:2)
递归通常是最简单的方法。
但是,如果某人创建了一个带有符号链接到自己或父级的目录,那可能会在一段时间后给你一个StackOverflowError。
答案 1 :(得分:2)
这是一个简单的蜘蛛算法。它使用deque来处理文档和一组已处理的文档:
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)
请注意,这是迭代的,因此可以使用任意深树。