我正在尝试解析wikia上的页面,以获取页面上Infobox Book
模板的其他信息。问题是我只能获取模板的源代码而不是页面上的转换模板。
我使用以下网址作为基础:
http://starwars.wikia.com/api.php?format=xml&action=expandtemplates&text={{Infobox%20Book}}&generatexml=1
文档并没有真正告诉我如何将其指向特定页面并从页面解析转换后的模板。这甚至是可能的还是我需要自己解析它?
答案 0 :(得分:1)
要使用给定页面中的参数展开模板,您必须提供这些参数。 API无法知道模板在不同页面中的使用方式(甚至可以使用两次!)。
这有效:
action=expandtemplates&text={{Infobox Book|book name=Lost Tribe of the Sith: Skyborn}}
您当然必须继续添加要解析的所有参数(示例中有14)。
如果您的模板根据它们所在的页面自动更改(这不是这种情况),例如通过使用{{PAGENAME}}
之类的魔术词,您可以在API调用中添加&page=Lost_Tribe_of_the_Sith:_Skyborn
,以设置应扩展模板的上下文。
如果您不知道给定的参数,您可以:
使用index.php?action=render&title=Lost_Tribe_of_the_Sith:_Skyborn渲染整个页面,并解析返回的html以创建实际的信息框
获取(action=query&prop=revisions)并解析wikicode以获取模板的参数,并将其提供给expandtemplates
call
开始使用像Semantic MediaWiki这样的扩展程序,它允许您将维基更像是一个数据库
1和2可能会以多种方式出错,当然,正如你所拥有的wiki一样,根据定义,无法知道内容总是以一致的方式输入。