代码之家  ›  专栏  ›  技术社区  ›  hyperboreean

在树中存储站点链接

  •  1
  • hyperboreean  · 技术社区  · 14 年前

    我试图存储的链接,我刮从一个非二叉树网站。链接是按层次(显然)排列的。问题是如何生成树?我的意思是,我要如何通过链接提供的页面来知道谁是谁的孩子。

    现在我可以得到第一级和第二级的链接,但是不知道如何从这里开始,而且我必须递归地构建它,并且当我到达一个叶子(我已经有了)时有一个方法停止。

    我当时想的是(Python代码):

    def buildTree(root):
    for node in root.children:
        if <end condition here>:
            continue
        else:
            nodes = getNodes(urllib2.urlopen(node.url).read())
            node.addChildren(nodes)
            buildTree(node)
    

    其中根和节点是用户定义的 节点

    1 回复  |  直到 14 年前
        1
  •  1
  •   Ofri Raviv    14 年前

    显然,站点中的链接不是一棵树,而是一棵树 . 您应该有一个由URL标识的Page对象和一个从一个页面指向另一个页面的Link对象(页面a可以指向页面B,而页面B指向页面a,使其成为一个图形,而不是树)。

    扫描算法伪码:

    process_page(current_page):
        for each link on the current_page: 
        if target_page is not already in your graph:
            create a Page object to represent target_page
            add it to to_be_scanned set
        add a link from current_page to target_page
    
    scan_website(start_page)
        create Page object for start_page
        to_be_scanned = set(start_page)
        while to_be_scanned is not empty:
            current_page = to_be_scanned.pop()
            process_page(current_page)