网站的URL设计是非常重要的,一般都是分层的,形成比较清晰的树结构。
环路:
了解了网站的树形结构和环路情况后可以让我们爬取有价值的信息的时候更加有策略和针对性。
在环路中最重要的是URL去重,否则就会陷入死循环中,去重策略见我的上一篇博客 https://blog.csdn.net/CowBoySoBusy/article/details/83477266
深度优先:
和DFS一样,就是深度遍历二叉树所有的节点,节点信息就是URL。
用到了递归(借助栈这个数据结构)的思想。
伪代码:
def depth_tree(tree_node):
if tree_node is not None:
print(tree_node._data)
if tree_node._left is not None:
return depth_tree(tree_node._left)
if tree_node._right is not None:
return depth_tree(tree_node._right)
递归如果太深注意栈溢出的危险。
广度优先:
和BFS一样,就是广度遍历二叉树所有的节点,节点信息就是URL。
先访问兄弟节点再访问子节点。
层次遍历。
借助队列这个数据结构。
伪代码:
def level_queue(root):
if root is None:
return
my_queue = []
node = root
my_queue.append(node)
while my_queue:
node = my_queue.pop(0)
print(node.elem)
if node.lchild is not None:
my_queue.append(node.lchild)
if node.rchild is not None:
my_queue.append(node.rchild)