HTML抓取:遍历嵌套目录

时间:2012-05-12 09:07:46

标签: python html iteration web-scraping

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

2 个答案:

答案 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)

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