2015-05-29 126 views
2

我正在制作一个Python网络爬虫程序来播放The Wiki game获取维基百科页面上的所有链接

如果你不熟悉这个游戏:

  1. 开始从维基百科
  2. 一些文章
  3. 选择一个目标文章
  4. 尝试只通过点击维基去从一开始就文章的目的文章/链接

我的过程中这样做是:

  1. 以启动文章和目标的文章作为输入
  2. 获取链接到目标物品
  3. 瓶坯的链接breadth-first search发现避免已经访问过的网页从一开始的文章
  4. 开始的文章列表
  5. 检查目标文章是否在当前页面上:如果是,则返回path_crawler_took+goal_article
  6. 检查是否有任何链接到目标的文章位于当前页面上。如果其中之一是,返回path_crawler_took+intermediate_article+goal

我有一个问题,程序将返回一个路径,但路径不会真正链接到目标。

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) 

我意识到,我被刮的所有环节的断目标页面的获取链接的目标,但维基/链接是单向的:只是因为我们的目标链接指向的网页并不意味着页面链接到目标。

如何获得链接到目标的文章列表?

+0

退房维基百科的反向链接工具http://en.wikipedia.org/wiki/Special:WhatLinksHere/Backlink –

回答

5

维基百科内置了一个工具,可以完全描述您所描述的WhatLinksHere/Backlink

您可以在每个维基百科页面上看到此工具。 Example

您可以简单地删除目标背页页面上的所有链接。

'http://en.wikipedia.org/w/index.php?title=Special%3AWhatLinksHere&limit='500'&target='+goal+'&namespace=0' 
                          ^^^^ 
                          Article you are trying to reach here 

Wiki-help page for WhatLinksHere

相关问题