2012-05-12 55 views
0

我需要抓取具有基本文件夾系統的網站,其中包含關鍵字的文件夾 - 某些文件夾包含文本文件。我需要掃描所有頁面(文件夾)並檢查指向新文件夾的鏈接,記錄關鍵字和文件。我的主要問題是更抽象:如果有一個包含嵌套文件夾和未知「深度」的目錄,那麼最重要的pythonc方法是遍歷它們。 [如果「深度」是已知的,則對於循環而言將是非常簡單的)。想法大大appriciated。HTML抓取:通過嵌套目錄迭代

回答

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) 

注意,這是迭代的,因此不能以任意深度的樹工作。

+0

謝謝你的回答 - 它運作良好。但我認爲有一個錯誤:deque對象沒有添加屬性,它應該追加。 – root

+0

@priilane:不客氣。我的文章是相當僞代碼比python工作...然而,修復。 – georg

2

遞歸通常是最簡單的方法。

但是,如果某人創建了一個帶有符號鏈接的目錄,它可能會在一段時間後給你一個StackOverflowError。

+0

謝謝你的回答。在我看來,這兩個問題的答案都可以解決問題。但是,由於我對Python /遞歸相當新,所以您可能會提供一小段(僞)代碼,以便比較這兩個選項。 – root