((Wikipedia api)返回的表数据不遵循确切的JSON语法/如何从Wikipedia api获取表数据作为行和列?

问题描述 投票:0回答:1

[当我尝试获取表数据作为json时,我可以在以下查询的json输出中找到可区别的子级:

https://en.wikipedia.org/w/api.php?action=parse&page=List_of_football_clubs_in_India&prop=wikitext&section=3&format=json

我想获取此表的行和列(文本):-

https://en.wikipedia.org/wiki/List_of_football_clubs_in_India#Assam

JSON输出似乎很复杂,我找不到从中提取文本的好方法。

node.js json mediawiki wikipedia-api
1个回答
0
投票

我不确定,您期望什么。您对页面的API请求实际上是返回封装在JSON结构中的Wikitext。但是,Wikitext(表所在的部分)不是JSON,因此您无法真正将其解释为此类。

我也不太确定,您想要什么信息。如果您想在桌子上放足球俱乐部,那么您唯一的选择就是解析wikitext(您也可以从API返回实际解析的HTML,使其更“容易”)并亲自浏览数据。但是,这可能是容易出错且不有趣的任务。

因此,如果您希望以结构化数据格式获取印度的所有足球俱乐部,则可能最好尝试使用Wikidata。它允许您处理结构化数据以获得所需的信息(如果对象具有指向Wikipedia页面的链接,还可以获取Wikipedia文章的链接)。在您的用例中,尝试使用Wikidata Query service可能是一个好主意。

您可以在其中发出类似的查询:

SELECT ?itemLabel ?sitelink WHERE {
  ?item wdt:P31 wd:Q476028;
        wdt:P17 wd:Q668.
  ?sitelink schema:isPartOf <https://en.wikipedia.org/>;
            schema:about ?item.
  SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }
}

将查询印度所有足球俱乐部的列表,并向您返回带有商品标签以及英语维基百科文章链接的列表:https://query.wikidata.org/#SELECT%20%3FitemLabel%20%3Fsitelink%20WHERE%20%7B%0A%20%20%3Fitem%20wdt%3AP31%20wd%3AQ476028%3B%0A%20%20%20%20%20%20%20%20wdt%3AP17%20wd%3AQ668.%0A%20%20%3Fsitelink%20schema%3AisPartOf%20%3Chttps%3A%2F%2Fen.wikipedia.org%2F%3E%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20schema%3Aabout%20%3Fitem.%0A%20%20SERVICE%20wikibase%3Alabel%20%7B%20bd%3AserviceParam%20wikibase%3Alanguage%20%22%5BAUTO_LANGUAGE%5D%2Cen%22.%20%7D%0A%7D

© www.soinside.com 2019 - 2024. All rights reserved.