Python中的递归网站树

时间:2017-04-23 18:14:52

标签: python recursion web-scraping beautifulsoup

我使用BeautifulSoup4在Python中编写了一个程序,该程序从随机的维基百科文章开始,并且仅在段落部分中获取前两个链接。我想创建一个树,它获取随机文章的前两个链接,然后它转到这两个链接并抓取这些页面上的前两个链接,依此类推。当然,使用递归是有意义的,但我被卡住了。

这是我的抽象代码:

def tree(link):
    branch = get_links(link) # Function returns the first two links on the article in a list of strings
    return tree(branch[0]), tree(branch[1])

origin = get_random_article() # Returns a link to a random Wikipedia article as a string

links = tree(origin)

这段代码创建了一个无限循环,显然我需要某种迭代过程或循环来限制它。

以下是我的观点:

  1. 我需要某种限制器来确定它创建了多少个分支,因此它不会无限循环
  2. 一种在创建指定数量的分支
  3. 后返回它找到的所有链接的方法

    我将输出文件或其他内容的数据,但是现在,非常感谢有关如何创建此树的任何帮助。

    提前谢谢你,

    卢卡斯

1 个答案:

答案 0 :(得分:0)

使用队列或堆栈。从随机文章开始获取两个链接,将它们添加到队列中。从队列中获取一个链接,然后重复。每当您从队列中获取文章时,请递增计数。如果计数大于您想要的限制,请停止。

尽管如此,正如@ cricket_007所提到的那样尝试scrapy