【发布时间】:2014-04-05 13:11:33
【问题描述】:
我正在尝试解析 wikia 上的页面,以获取页面上 Infobox Book 模板的更多信息。问题是我只能在页面上获取模板的源而不是转换后的模板。
我使用以下网址作为基础:
http://starwars.wikia.com/api.php?format=xml&action=expandtemplates&text={{Infobox%20Book}}&generatexml=1
文档并没有真正告诉我如何将其指向特定页面并从页面解析转换后的模板。这甚至可能吗?还是我需要自己解析?
【问题讨论】:
-
我不明白,你想做什么?您在上面给出的 API 调用对我来说非常好。您想解析一整页,而不是一段 wiki 文本吗?那么你应该使用
/index.php?action=render&title=Page_title(或者,如果你真的因为某种原因需要使用API入口点,使用解决方法/api.php?action=parse&text={{NS:page}}) -
我想要一个完全填充的模板。这包括相关页面的数据。上面只为您提供了模板的原始文本,而不是带有源数据的渲染模板。在目标处使用此 url:
http://starwars.wikia.com/wiki/Lost_Tribe_of_the_Sith:_Skyborn我希望以下 api 调用为我提供包含所有书籍信息的模板。http://starwars.wikia.com/api.php?format=xml&action=expandtemplates&text={{Infobox%20Book}}&generatexml=1&page=Lost_Tribe_of_the_Sith:_Skyborn。不过,这只给出了原始模板文本。 -
我想你误解了 MediaWiki 模板在这里是如何工作的。在这种情况下添加
&page=Lost_Tribe_of_the_Sith:_Skyborn没有任何区别,因为模板{{Infobox Book}}不会根据它所在的页面而改变。它只会随着输入的参数而变化,例如{{Infobox Book|book name=Lost Tribe of the Sith: Skyborn}}. -
如果你想从你的维基页面中提取任意数据片段,我建议你看看 Semantic MediaWiki,但是你当然必须离开 Wikia。