Web爬虫式程序-Wiki分离度

问题描述

| 受今天的xkcd工具提示启发,我得到了一个有趣的小项目。 基本上,前提是对于任何Wikipedia文章,如果您一遍又一遍地跟踪第一个链接(不在括号内或斜体),则最终将获得Philosophy文章。 我正在尝试编写一个程序,该程序基本上是随机选择一个维基百科页面(可能使用http://en.wikipedia.org/wiki/Special:Random URL),然后从Philosophy确定页面“深度”。 我已经打开了一个用C(我最熟悉的语言)编写的程序,目的是使计划变得清晰,并很快意识到除了两个“次要”(又称“重要”)问题之外,我知道如何执行大多数程序:
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页面的库。以及有关如何根据上述规则获得正确链接的一些技巧。 (而且-我敢肯定,有100万种方法可以更有效/更轻松地完成此操作,我很好奇我是否可以全部/大部分用C语言完成) 感谢您提供的任何帮助,提示链接或指向正确方向的信息。     

解决方法

查找一个HTML解析器库(libxml2可以完成此工作)并阅读其手册。 XPath可能是您的朋友。 找到一个HTTP客户端库(并阅读其手册),然后参阅1。     ,对于任何可在Wikipedia上运行的程序,我的建议是:不要使用HTML;不要使用HTML。而是解析SQL转储,特别是链接表。链接表解析器(在C ++中,不是C)是我的Wikiassoc程序的一部分。