我需要抓取具有基本文件夾系統的網站,其中包含關鍵字的文件夾 - 某些文件夾包含文本文件。我需要掃描所有頁面(文件夾)並檢查指向新文件夾的鏈接,記錄關鍵字和文件。我的主要問題是更抽象:如果有一個包含嵌套文件夾和未知「深度」的目錄,那麼最重要的pythonc方法是遍歷它們。 [如果「深度」是已知的,則對於循環而言將是非常簡單的)。想法大大appriciated。HTML抓取:通過嵌套目錄迭代
0
A
回答
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)
注意,這是迭代的,因此不能以任意深度的樹工作。
2
遞歸通常是最簡單的方法。
但是,如果某人創建了一個帶有符號鏈接的目錄,它可能會在一段時間後給你一個StackOverflowError。
+0
謝謝你的回答。在我看來,這兩個問題的答案都可以解決問題。但是,由於我對Python /遞歸相當新,所以您可能會提供一小段(僞)代碼,以便比較這兩個選項。 – root
相關問題
- 1. 如何通過嵌套項目迭代
- 2. 迭代通過嵌套JSON
- 3. 通過嵌套HashMap迭代
- 4. 迭代通過目錄
- 5. 通過嵌套列表進行迭代
- 6. 通過嵌套對象/數組迭代
- 7. 通過嵌套表/ spreadhseet迭代
- 8. 通過嵌套的JavaScript對象迭代
- 9. 通過Ruby中嵌套的JSON迭代
- 10. 通過嵌套列表進行迭代
- 11. 迭代過嵌套集合
- 12. 如何使用嵌套循環通過代理使用curl來抓取HTML?
- 13. 迭代通過嵌套上市來獲取一個鍵值對
- 14. PHP通過嵌套目錄循環
- 15. 嵌套json抓取
- 16. 迭代通過NSData和抓塊
- 17. 迭代嵌套JSON
- 18. 迭代通過嵌套陣列抓住每個陣列,則第二的第一個目的,等等
- 19. 迭代通過MDB的目錄,並提取元數據
- 20. 迭代通過IPersistentCollection項目
- 21. 迭代通過嵌套的JSON數組iPhone
- 22. 迭代通過嵌套的數字鍵json對象
- 23. 通過JSON對象迭代並形成所有嵌套組合
- 24. 迭代通過由嵌套元組/字典組成的列表
- 25. 如何通過對象的嵌套屬性進行迭代
- 26. 通過遞歸與可用迭代器進行嵌套循環
- 27. 通過嵌套的Javascript對象從API響應迭代
- 28. 通過嵌套哈希映射進行迭代
- 29. 迭代通過已嵌套對象的NodeJS
- 30. 通過嵌套的json對象數組迭代
謝謝你的回答 - 它運作良好。但我認爲有一個錯誤:deque對象沒有添加屬性,它應該追加。 – root
@priilane:不客氣。我的文章是相當僞代碼比python工作...然而,修復。 – georg