获取维基百科文章的第一行
我有一篇维基百科文章,我想从文章中获取第一个z行(或第一个x字符,或第一个y字,无所谓)。
问题是:我可以通过API或者解析的HTML(通过直接的HTTP-Request,最终在打印版本上)获得源Wiki-Text,但是如何找到显示的第一行? 通常来源(html和wikitext)以信息框和图像开头,第一个显示的实际文本位于代码的下方。
例如:维基百科上的阿尔伯特爱因斯坦(印刷版)。 查看代码,第一个真正的文本行“阿尔伯特爱因斯坦(发音为/ælbərtaɪnstaɪn/;德语:[albɐtaɪ̯nʃtaɪ̯n]; 1879年3月14日至1955年4月)是理论物理学家。 并不是一开始。 这同样适用于Wiki-Source,它以相同的信息框开始,依此类推。
那么你将如何完成这项任务? 编程语言是java,但这不应该。
我想到的一个解决方案是使用xpath查询,但是这个查询对于处理所有的边界情况将会非常复杂。 [更新]这并不复杂,请参阅下面的解决方案![/ update]
谢谢!
你不需要。
API的exintro
参数仅返回文章的第一部分(第0部分)。
例如: api.php?action = query&prop = extracted&exintro&explaintext&titles = Albert%20Einstein
还有其他参数:
exchars
字符提取的长度。 exsentences
要返回的句子数量。 exintro
仅返回第零部分。 exsectionformat
用于明文提取的部分标题格式:
wiki — e.g., == Wikitext ==
plain — no special decoration
raw — this extension's internal representation
exlimit
要返回的提取的最大数量。 由于摘录的产生速度可能会很慢,因此对于仅限简介的摘录,整个页面摘录的限制限制为20;对于整页摘录,则限制为1。 explaintext
返回纯文本提取。 excontinue
当有更多结果可用时,请使用此参数继续。 来源:https://www.mediawiki.org/wiki/Extension:MobileFrontend#prop.3Dextracts
我也是在同样的需求,并写了一些Python代码来做到这一点。
该脚本以给定名称下载维基百科文章,使用BeautifulSoup解析它并返回前几个段落。
代码位于http://github.com/anandology/sandbox/blob/master/wikisnip/wikisnip.py。
维基百科提供摘要下载。 虽然这是一个相当大的文件(目前为2.5GB
),但它提供了所有文章所需的信息。