Web爬虫类型程序 - 维基分离度

时间:2011-05-26 09:38:58

标签: html c hyperlink

我从今天的xkcd工具提示中获得了一个有趣的小方案项目。 基本上,前提是对于任何维基百科文章,如果你一遍又一遍地跟随第一个链接(不在括号内或斜体中),你将会看到哲学文章。

我正在尝试编写一个基本上随机选择维基百科页面的程序(可能使用http://en.wikipedia.org/wiki/Special:Random URL),然后确定哲学页面的“深度”。

我用C(我最熟悉的语言)敲了一个程序只是为了让计划直截了当并且很快意识到除了两个“次要”(也就是重要的位)问题之外我知道如何做大部分工作:< / p>

char *grab_first_link(page, int n){ 
    //return url of 1st link not in italics or inside parentheses
}

void get_random_page{
    //go to http://en.wikipedia.org/wiki/Special:Random
    //wait 2 seconds
    //return the  URL generated by the random page
}

所以基本上我正在寻找一个可以帮助解决简单HTML页面的库。以及如何根据上述规则获得正确链接的一些提示。

(也 - 我确定有更多的方法可以更有效/更容易地做到这一点,我只是好奇我是否可以完成所有工作/主要是在C中完成)

感谢您提供正确方向的任何帮助,提示,链接或要点。

2 个答案:

答案 0 :(得分:1)

我对任何适用于维基百科的程序的建议:不要使用HTML执行此操作;相反,解析SQL dump,特别是链接表。 link table parser(在C ++中,而不是C语言)是我的Wikiassoc计划的一部分。

答案 1 :(得分:1)

  1. 找到一个HTML解析器库(libxml2可能会完成这项工作)并阅读其手册。 XPath可能会成为你的朋友。
  2. 查找HTTP客户端库(并阅读其手册),然后参阅1.