我使用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)
这段代码创建了一个无限循环,显然我需要某种迭代过程或循环来限制它。
以下是我的观点:
我将输出文件或其他内容的数据,但是现在,非常感谢有关如何创建此树的任何帮助。
提前谢谢你,
卢卡斯
答案 0 :(得分:0)
使用队列或堆栈。从随机文章开始获取两个链接,将它们添加到队列中。从队列中获取一个链接,然后重复。每当您从队列中获取文章时,请递增计数。如果计数大于您想要的限制,请停止。
尽管如此,正如@ cricket_007所提到的那样尝试scrapy