从维基百科页面获取所有链接
Get all links from page on Wikipedia
我正在制作一个 Python 网络爬虫程序来播放 The Wiki game。
如果您不熟悉这款游戏:
- 从维基百科上的某篇文章开始
- 选择一篇目标文章
- 尝试通过单击 wiki/ links
从起始文章转到目标文章
我这样做的过程是:
- 以一篇起始文章和一篇目标文章作为输入
- 获取link到目标文章
的文章列表
- 在发现的 link 上执行 breadth-first search,避免从第一篇文章
开始已经访问过的页面
- 检查目标文章是否在当前页面上:如果是,则 return
path_crawler_took+goal_article
- 检查目标 link 的任何文章是否在当前页面上。如果其中之一是 return
path_crawler_took+intermediate_article+goal
我遇到了一个问题,程序会 return 一条路径,但这条路径不会真正 link 到达目标。
def get_all_links(source):
source = source[:source.find('Edit section: References')]
source = source[:source.find('id="See_also"')]
links=findall('\/wiki\/[^\(?:/|"|\#)]+',source)
return list(set(['http://en.wikipedia.org'+link for link in links if is_good(link) and link]))
links_to_goal = get_all_links(goal)
我意识到我通过从目标页面中删除所有 link 来实现目标 link,但是 wiki/link 是单向的:一个页面的目标 link 并不意味着该页面 link 达到了目标。
如何获得link达到目标的文章列表?
维基百科有一个内置工具可以完成您所描述的事情WhatLinksHere/Backlink。
您可以在每个维基百科页面上看到这个工具。
您可以简单地从目标页面的反向链接页面中删除所有链接。
'http://en.wikipedia.org/w/index.php?title=Special%3AWhatLinksHere&limit='500'&target='+goal+'&namespace=0'
^^^^
Article you are trying to reach here
我正在制作一个 Python 网络爬虫程序来播放 The Wiki game。
如果您不熟悉这款游戏:
- 从维基百科上的某篇文章开始
- 选择一篇目标文章
- 尝试通过单击 wiki/ links 从起始文章转到目标文章
我这样做的过程是:
- 以一篇起始文章和一篇目标文章作为输入
- 获取link到目标文章 的文章列表
- 在发现的 link 上执行 breadth-first search,避免从第一篇文章 开始已经访问过的页面
- 检查目标文章是否在当前页面上:如果是,则 return
path_crawler_took+goal_article
- 检查目标 link 的任何文章是否在当前页面上。如果其中之一是 return
path_crawler_took+intermediate_article+goal
我遇到了一个问题,程序会 return 一条路径,但这条路径不会真正 link 到达目标。
def get_all_links(source):
source = source[:source.find('Edit section: References')]
source = source[:source.find('id="See_also"')]
links=findall('\/wiki\/[^\(?:/|"|\#)]+',source)
return list(set(['http://en.wikipedia.org'+link for link in links if is_good(link) and link]))
links_to_goal = get_all_links(goal)
我意识到我通过从目标页面中删除所有 link 来实现目标 link,但是 wiki/link 是单向的:一个页面的目标 link 并不意味着该页面 link 达到了目标。
如何获得link达到目标的文章列表?
维基百科有一个内置工具可以完成您所描述的事情WhatLinksHere/Backlink。
您可以在每个维基百科页面上看到这个工具。
您可以简单地从目标页面的反向链接页面中删除所有链接。
'http://en.wikipedia.org/w/index.php?title=Special%3AWhatLinksHere&limit='500'&target='+goal+'&namespace=0'
^^^^
Article you are trying to reach here