Java 从Wiki转储中提取文章

Java 从Wiki转储中提取文章,java,xml,mediawiki,wiki,wikipedia,Java,Xml,Mediawiki,Wiki,Wikipedia,我有一个巨大的wiki转储(提取tar.bz文件后约50GB),我想从中提取单个文章。我正在使用库来提取内容,它确实给出了标题、文本、最后提到的类别和一些其他属性。但我更感兴趣的是与每篇文章相关联的外部链接/引用,因为这个库没有为其提供任何API 除了解析我们通过getWikiText()API得到的wikiText之外,还有什么优雅而有效的方法来提取它。 或者是否有任何其他java库可以从这个转储文件中提取,它为我提供了标题、内容、类别和引用/外部链接。XML转储正好包含库提供的内容:页面文本

我有一个巨大的wiki转储(提取tar.bz文件后约50GB),我想从中提取单个文章。我正在使用库来提取内容,它确实给出了标题、文本、最后提到的类别和一些其他属性。但我更感兴趣的是与每篇文章相关联的外部链接/引用,因为这个库没有为其提供任何API

除了解析我们通过
getWikiText()
API得到的
wikiText
之外,还有什么优雅而有效的方法来提取它。

或者是否有任何其他java库可以从这个转储文件中提取,它为我提供了标题、内容、类别和引用/外部链接。

XML转储正好包含库提供的内容:页面文本和一些基本元数据。它不包含任何关于类别或外部链接的元数据

在我看来,你有三个选择:

  • 对需要的数据使用特定的SQL转储,例如,categorylinks.SQL用于类别,externallinks.SQL用于外部链接。但是没有引用转储(因为MediaWiki不跟踪这些引用)
  • 从XML转储解析wikitext。这将与模板有关
  • 使用您自己的MediaWiki实例将Wiki文本解析为HTML,然后再进行解析。这也可能处理模板

  • 可能为时已晚,但此链接可能有助于:


    下面是上述程序的输出示例:

    JWPL可能是最好的。试试这些@Amit G JWPL要求我将转储内容存储在SQL数据库中。是否有在wiki转储文件本身(.tar.bz2或.tar)上运行的库?这里没有简单的方法。您将为wikitext编写自己的解析器。在这里使用javaRegEx或Antlr。为什么不从API中询问所有这些呢?如果您需要转储,您可以从ZIM转储(kiwix.org)获取1)解析的内容和引用,2)从相应表(dumps.wikimedia.org)的SQL或txt.gz转储中获取标题、类别和外部链接。实际的XML文件(提取后)包含所有信息,包括引用和外部链接。但是,当我使用
    wikixmlj
    库时,API
    getWikiText()
    在剥离链接和引用后只提供了内容。因为我只对这些链接感兴趣,所以我编写了一个简单的逐行解析器来获取每个
    标记,并显式地查找引用和外部链接。旁注:
    WikiXMLJ
    在每个wiki页面的末尾提供了可用的类别