从维基百科文件中获取描述的人物

时间:2013-12-14 22:51:49

标签: wikipedia wikipedia-api mediawiki-api

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

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

从此文件中提取人员元数据的API请求是什么样的(Schmidt,Helmut:Bundeskanzler,Verteidigungsminister,SPD,Bundesrepublik Deutschland)

以下是另外一个描述了3个人的例子:http://commons.wikimedia.org/wiki/File:Bundesarchiv_B_145_Bild-F009740-0002,_Presseclub_Bonn,_Bildungspolitiker_aus_Finnland.jpg

1 个答案:

答案 0 :(得分:5)

不幸的是,此信息不是以任何结构化方式存储的 - 您在图像描述页面上看到的表格只是一个呈现给HTML表格的MediaWiki模板。

要从模板中提取信息,您基本上有三个选项:

    使用prop=revisionsrvprop=content的图片说明页面的
  1. Fetch the raw wiki markup并自行解析。不幸的是,可靠地解析wikitext可能有点棘手,但是有几个MediaWiki bot frameworks内置了非常好的解析器。

  2. Fetch the parsed HTML version of the page使用action=parse并使用标准HTML解析器从表格中提取文字。

  3. MediaWiki 1.20以来,您还可以选择告诉MediaWiki为您和return an XML parse tree解析模板标记,方法是将参数generatexml=1传递给prop=revisionsaction=parse。相关部分看起来像这样(为了便于阅读而重新格式化):

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

    这不是一个非常干净的数据表示 - 它仍然包含一些未解析的wiki文本元素,比如*表示项目符号列表项 - 但它应该比完全原始的MediaWiki模板标记更容易解析