如何通过API从维基百科中获取URL?

时间:2016-01-25 10:38:50

标签: php wikipedia wikipedia-api mediawiki-api

我有公司名称列表。我想做的是,按公司名称获取他们的网站。假设我们想从Microsoft维基百科页面抓取“网站”。

image

以下查询不会返回此信息

https://en.wikipedia.org/w/api.php?action=query&prop=extracts|info&format=json&titles=microsoft

有关获取网站字段的任何建议吗?

1 个答案:

答案 0 :(得分:2)

使用Wikipedia API这样做并不容易,因为主页网址格式可能不同,链接可以嵌套在许多模板中,并且可能必须使用正则表达式。更好的变体是使用Wikidata API

因此,维基百科中的文章Microsoft与维基数据项Microsoft (Q2283)相关联,其中包含属性official website (P856),这意味着您需要从此请求的响应中获取此属性:

https://www.wikidata.org/w/api.php?action=wbgetentities&format=json&sites=enwiki&languages=en&props=claims&titles=Microsoft

最后一个将直接返回官方网站的网址:

{
    ....
    "P856":[{
        "mainsnak":{
            "datavalue":{
                "value":"https://www.microsoft.com"
            },
        },
    }]
    ....
}

如果您需要包含属性P856和P1128 (employees)的所有维基数据项目列表,并且还包含指向英语维基百科的链接,则可以使用WikidataQuery API

http://wdq.wmflabs.org/api?q=claim[1128] AND claim[856] AND link[enwiki]