当我试图以json的形式获取表格数据时,我可以在以下查询的json输出中找到可区分的子代。
我想得到这个表格的行和列(文本):-。
https:/en.wikipedia.orgwikiList_of_football_clubs_in_India#Assam。
JSON输出看起来很复杂,我没有找到一个很好的方法来从中提取文本。
(我是在Javascript(Node.js)中做的)
请帮助...
我不知道,你希望得到什么。你对页面的API请求实际上是返回封装成JSON结构的wikitext。然而,wikitext(表是其中的一部分)不是JSON,所以你不能真正将其解释为JSON。
我也不太确定,你想要的信息是什么。如果你想在表格中找到足球俱乐部,那么你唯一的选择就是解析wikitext(你也可以从API中返回实际解析过的HTML,以使其 "更容易"),然后自己去查看数据。然而,这可能是一个容易出错且不好玩的任务。
所以,如果你想以结构化的数据格式获得印度所有的足球俱乐部,我可能最好试试Wikidata。它可以让你通过结构化数据来获取你所需要的信息(如果对象有链接到维基百科页面,还可以获取维基百科文章的链接)。在你的使用案例中,也许你可以尝试使用 维基数据查询服务.
在那里,你可以发出这样的查询。
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". }
}
假设这是 res
是你从wiki中得到的数据。
//This will get you the innermost part of the object which is the text you want
let wikiText = res.parse.wikitext['*'];
//This will strip out all the numbers and non-alphabet charater.
let pureText=wikitext.replace(/[^a-zA-Z\s]+/g, ' ');
上面的代码可以给你提供干净的文本访问;但是,如何将列和行分开,则取决于你。
这将会减慢一点性能(似乎,但我不确定是否有其他更快的方法存在)。这可以通过设置 prop=text
然后用JSDOM(自带for Node.js)解析得到的HTML。
我知道这个问题已经很老了,但有一个...。API 为这个。你可以提供一个页面标题,它将以JSON格式返回你选择的表格。