【发布时间】:2015-05-29 00:00:28
【问题描述】:
我正在制作一个 Python 网络爬虫程序来播放The Wiki game。
如果你不熟悉这个游戏:
- 从维基百科上的一些文章开始
- 选择目标文章
- 尝试通过单击 wiki/链接从开始文章到达目标文章
我这样做的过程是:
- 以起始文章和目标文章作为输入
- 获取链接到目标文章的文章列表
- 在找到的链接上添加breadth-first search,避开从开始文章开始已经访问过的页面
- 检查目标文章是否在当前页面:如果是,则返回
path_crawler_took+goal_article - 检查链接到目标的任何文章是否在当前页面上。如果其中之一,返回
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)
我意识到我是通过从目标页面上抓取所有链接来获取到目标的链接,但是 wiki/ 链接是单向的:仅仅因为目标链接到一个页面并不意味着该页面链接到目标。
如何获得链接到目标的文章列表?
【问题讨论】:
标签: python python-2.7 web-crawler