Javascript 如何从WikipediaAPI获取作为行和列的表数据?

Javascript 如何从WikipediaAPI获取作为行和列的表数据?,javascript,node.js,json,mediawiki,wikipedia-api,Javascript,Node.js,Json,Mediawiki,Wikipedia Api,当我尝试将表数据作为json获取时,我可以在以下查询的json输出中找到可区分的子项: 我想获取此表的行和列(文本):- JSON输出看起来很复杂,我没有找到从中提取文本的好方法 (我正在用Javascript(Node.js)完成这项工作) 请帮助..我不确定您的期望值。您对页面的API请求实际上返回了封装到JSON结构中的wikitext。但是,wikitext(表的一部分)不是JSON,因此您无法真正将其解释为JSON 我也不太确定你想要什么样的信息。如果你想把足球俱乐部放在桌子上,那

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

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

JSON输出看起来很复杂,我没有找到从中提取文本的好方法

(我正在用Javascript(Node.js)完成这项工作)


请帮助..

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

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

因此,如果你想让印度所有的足球俱乐部都采用结构化数据格式,我可能最好尝试一下Wikidata。它可以让你处理结构化数据以获得你需要的信息(如果这些对象有到Wikipedia页面的链接,还可以让你获得到Wikipedia文章的链接).在您的用例中,尝试使用

在那里,您可以发出如下查询:

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". }
}
SELECT?itemlab?sitelink WHERE{
?项目wdt:P31 wd:Q476028;
wdt:P17 wd:Q668。
?站点链接模式:isPartOf;
模式:关于?项。
服务wikibase:label{bd:serviceParam wikibase:language“[AUTO_language],en.”
}
它查询印度所有足球俱乐部的列表,并返回带有项目标签的列表以及指向英文维基百科文章的链接:

假设这是
res
是您从wiki获得的数据

//这将获得对象最里面的部分,即所需的文本
让wikiText=res.parse.wikiText['*'];
//这将去掉所有的数字和非字母字符。
让pureText=wikitext.replace(/[^a-zA-Z\s]+//g');

上面的代码可以让您清晰地访问文本;但是,如何将列和行分开取决于您。

这将稍微降低性能(看起来,但我不确定是否存在其他更快的方法)。
这可以通过设置
prop=text
,然后使用JSDOM(附带/for Node.js)解析获得的HTML来完成。

我知道这个问题很老,但有一个解决方法。你可以提供一个页面标题,它将返回你选择的JSON格式的表格。

我想要表格的文本字段(行和列)这有助于删除不必要的字符,但主要问题是
text['*']
是单个对象,不能对其中的每一行进行迭代。真的。也许我们可以标记每个单词?