我有一篇维基百科文章,我想从文章中获取前 z 行(或前 x 个字符,或前 y 个单词,无关紧要)。
问题:我可以获取源 Wiki-Text(通过 API)或解析的 HTML(通过直接 HTTP-Request,最终在打印版本上)但是我如何找到显示的第一行?通常,源代码(html 和 wikitext)从信息框和图像开始,第一个要显示的真实文本位于代码中的某个位置。
例如:
Albert Einstein on Wikipedia (打印版)。查看代码,第一行真实文本“阿尔伯特·爱因斯坦(发音为/ˈælbərt ˈaɪnstaɪn/;德语:[ˈalbɐt ˈaɪ̯nʃtaɪ̯n];1879 年 3 月 14 日至 1955 年 4 月 18 日)是一位理论物理学家。”不是在开始。这同样适用于 Wiki-Source ,它以相同的信息框开始,依此类推。
那么你将如何完成这个任务呢?编程语言是java,但这无关紧要。
我想到的一个解决方案是使用 xpath 查询,但这个查询处理所有边界情况会相当复杂。 [update]没那么复杂,看下面我的解决方案![/update]
谢谢!
最佳答案
你不需要。
API 的 exintro
参数仅返回文章的第一个(第零个)部分。
示例: api.php?action=query&prop=extracts&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
关于parsing - 获取维基百科文章的第一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1565347/