我正在开发一个Android应用程序,该应用程序可从Wikia页面提取信息并将其显示在该应用程序中。我目前正在拉动所有类别以进行导航,并设置了我的应用程序以在WebView中显示页面,但我只想拉动信息并自行设置格式,而不是通过传递给WebView来使其廉价。

我用来获取文本的是:http://scottlandminecraft.wikia.com/api.php?format=xml&action=query&titles=ZackScott&prop=revisions&rvprop=content

我的问题是文本重新组合在一起,是否有人对如何使其更加格式化有任何想法,以便我可以从标签中进行解析,还是我在浪费时间试图找到它?如果是这样,最好从提取的文本中找到标识符来解析我需要的文本,还是有更好的方法?

感谢您的投入和时间。

最佳答案

如果您不想自己解析Wiki标记,最简单的方法是检索已解析的页面HTML版本,然后使用HTML解析器(如Hasham建议的jsoup)对其进行处理。

除了仅抓取普通的Wiki用户界面(这将使您的页面HTML包裹在导航皮肤中)之外,还有两种获取MediaWiki页面的HTML文本的方法:

  • 将API与 action=parse 结合使用,它将返回包装在MediaWiki API XML(或JSON/YAML/等)响应中的页面HTML,如下所示:
  • http://scottlandminecraft.wikia.com/api.php?format=xml&action=parse&page=ZackScott
  • 或将主index.php脚本与 action=render 一起使用,它将仅返回页面HTML:
  • http://scottlandminecraft.wikia.com/index.php?action=render&title=ZackScott

  • 附言由于您在问题中提到了各个部分,因此请注意,action=parse API模块可以使用prop=sections(甚至是prop=sections|text)返回有关页面上各个部分的信息。有关示例,请参见以下API查询:
  • http://scottlandminecraft.wikia.com/api.php?format=xml&action=parse&page=ZackScott&prop=sections
  • 10-07 19:27
    查看更多