Python 递归解析Wikipedia并从包含的链接中获取文本

Python 递归解析Wikipedia并从包含的链接中获取文本,python,parsing,recursion,web-scraping,wikipedia,Python,Parsing,Recursion,Web Scraping,Wikipedia,因为我讨厌在维基百科文章中来回点击阅读,所以我正在尝试构建一个工具,根据以下算法创建“扩展维基百科文章”: 创建两个变量:Depth和Length 将Wikipedia文章设置为种子页 分析这篇文章:每当有到另一篇文章的链接时,获取第一个长度句子,并将其包含在原始文章中(例如括号内或以其他方式突出显示) 按一定的深度递归执行此操作,即深度不超过两级 结果将是一篇文章,可以在一次阅读不总是点击来回 您将如何在Python中构建这样的机制?应该使用哪些库(是否有用于此类任务的库)?有什么有用的教

因为我讨厌在维基百科文章中来回点击阅读,所以我正在尝试构建一个工具,根据以下算法创建“扩展维基百科文章”:

  • 创建两个变量:
    Depth
    Length
  • 将Wikipedia文章设置为种子页
  • 分析这篇文章:每当有到另一篇文章的链接时,获取第一个
    长度
    句子,并将其包含在原始文章中(例如括号内或以其他方式突出显示)
  • 按一定的
    深度递归执行此操作,即深度不超过两级
结果将是一篇文章,可以在一次阅读不总是点击来回


您将如何在Python中构建这样的机制?应该使用哪些库(是否有用于此类任务的库)?有什么有用的教程吗?

使用或解析html页面。使用或获取嵌套页面。您可能需要使用一些正则表达式来处理或计算提取的链接。

您可以解析html,也可以解析原始版本以查找
[[Link]]
。 无论哪种方式,你都应该谈谈:

或者

您可以使用来请求url。对于解析htmlpage,有一个很棒的库供您调用。有一件事你需要考虑的是,在用爬行器扫描维基百科时,需要添加一个与你的请求对应的页眉。否则维基百科将只允许被爬网

 request = urllib2.Request(page)
添加标题

 request.add_header('User-agent', 'Mozilla/5.0 (Linux i686)')
然后加载页面并将其交给
BeautifulSoup

 soup = BeautifulSoup(response)  
 text = soup.get_text()
这将为您提供页面中的链接

 for url in soup.find_all('a',attrs={'href': re.compile("^http://")}):  
       link = url['href']
现在关于维基百科的爬网算法,你想要的是一种叫做。同一页中提供了一个易于理解的伪代码

这些库的其他功能可以通过谷歌搜索,并且很容易理解。祝你好运。

你可能想试试这个——它比urllib和其他内置库的级别要高一点。特别是,使用
follow\u link()
back()
等命令,您可以像使用浏览器一样轻松地四处导航

要获得所需的行,请查看一些Wikipedia页面的源代码,以查看摘要在HTML页面中的起始位置-通过快速浏览,我认为您需要找到id为“mw content text”的div,并从第一个
元素获取文本。正如其他人所提到的,我很擅长这一点

或者,您可以尝试使用Wikipedia的Python库——这里有一个列表:,在stackoverflow答案中


听起来是个有趣的小项目,祝你好运

使用wikipedia python库,该库允许您查看页面上的链接,包括“另请参阅”部分中的链接,您可以对它们进行迭代,并使用该库获取其中的内容。