2013-12-14 41 views
1

如何从维基百科文件获取描述的人列表?从维基百科文件中获取描述。

例子:我有文章ID文件5457009.维基百科的链接是http://commons.wikimedia.org/wiki/File:Bundesarchiv_B_145_Bild-F048807-0025,_Bonn,_Neubau_Kanzleramt,_Schmidt_im_Arbeitszimmer.jpg

什么将API请求样子,从这个文件中提取人的元数据(施密特,赫尔穆特:Bundeskanzler,Verteidigungsminister,SPD ,联邦德国德国)

这里是3人所描绘的另一个例子:http://commons.wikimedia.org/wiki/File:Bundesarchiv_B_145_Bild-F009740-0002,_Presseclub_Bonn,_Bildungspolitiker_aus_Finnland.jpg

回答

5

不幸的是,此信息不存储在任何结构化的方式—你的形象描述页面上看到表只是A M呈现给HTML表格的ediaWiki模板。

为了从模板的信息,您基本上有三种选择:

  1. 图像描述页面Fetch the raw wiki markup使用prop=revisionsrvprop=content和自己解析它。不幸的是,解析wikitext的可靠可有点棘手,但中内置了相当不错的解析器几个MediaWiki bot frameworks使用action=parse

  2. Fetch the parsed HTML version of the page,并使用标准的HTML解析器来提取从表中的文本。

  3. 由于MediaWiki 1.20,你也可以选择告诉链接到MediaWiki由参数generatexml=1传递要么prop=revisionsaction=parse解析模板标记为您和return an XML parse tree。相关的部分将是这个样子(重新格式化为可读性):

<template> 
    <title>BArch-image</title> 
    ... 
    <part> 
    <name>depicted people</name> = 
    <value> 
     * Schmidt, Helmut: Bundeskanzler, Verteidigungsminister, SPD, Bundesrepublik Deutschland 
    </value> 
    </part> 
    ... 
</template> 

这不是数据的完全干净的表现—它仍包含了一些非解析wikitext的元素,像*表示项目符号列表item —,但它应该比完全原始的MediaWiki模板标记更容易解析。

+0

这看起来很有希望。我喜欢你的第三种方法,我会试一试。 – kieste