我需要抓取具有基本文件夹系统的网站,其中包含关键字的文件夹 - 某些文件夹包含文本文件。我需要扫描所有页面(文件夹)并检查指向新文件夹的链接,记录关键字和文件。我的主要问题是更抽象:如果有一个包含嵌套文件夹和未知“深度”的目录,那么最重要的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