parsing - 获取维基百科文章的第一行

标签 parsing wikipedia wikipedia-api

我有一篇维基百科文章,我想从文章中获取前 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/

    相关文章:

    c - 在 C 中解析带引号的字符串

    wiki - 如何使用维基下载的索引文件中提供的信息?

    python - 使用 beautiful soup 的基本网页抓取 : scrape a table

    python - 从维基百科解析出生和死亡日期?

    javascript - 来自 WebExtensions 选项页面的 HTTP 请求不起作用

    jquery - 如何通过wiki api查询获取Table-Content

    c++ - 基于第一个单词C++解析文本文件

    java - 改进解析文本文件的代码

    Android:如何解析 HTML 站点并只获取一些特定数据?

    wikipedia - 获取仅位于类别中字母下方的页面