使用 API 从维基百科读取数据
Read data from wikipedia using API
对于我的项目,我正在尝试从维基百科读取数据,我不太确定我该怎么做。
我主要关心的是事件的阅读、日期、地点和主题。
首先,我已经开始阅读上述第 91 届奥斯卡金像奖的信息。
我试过使用维基百科查询服务,但效果不大。
然后我在 URL 之后遇到了 API 解决方案和 运行,
https://en.wikipedia.org/w/api.php?action=parse&format=json&prop=sections&page=91st_Academy_Awards
但是没有找到我要找的信息。
我正在尝试阅读下图中红框标记的信息,
谁能帮我解决这个问题,让我知道如何阅读上面提到的部分。
PS:我正在使用 Matlab 编写我的算法
一种可能的解决方案是使用 webread, and process the data using the functions from the Text Analytics Toolbox:
阅读网页
% Read HTML data.
raw = webread('https://en.wikipedia.org/w/api.php?action=parse&format=json&prop=text&page=91st_Academy_Awards');
% Specify sections of interest.
SectionsOfInterest = ["Date","Site","Preshow hosts","Produced by","Directed by"];
% Parse HTML data.
myTree = htmlTree(raw.parse.text.x_);
% Find table element.
tableElements = findElement(myTree,'Table');
tableOfInterest = tableElements(1);
% Find header cell elements.
thElements = findElement(tableOfInterest,"th");
% Find cell elements.
tdElements = findElement(tableOfInterest,"td");
% Extract text.
thHTML = thElements.extractHTMLText;
tdHTML = tdElements.extractHTMLText;
for section = 1:numel(SectionsOfInterest)
sectionName = SectionsOfInterest(section);
sectIndex = strcmp(sectionName,thHTML);
% Remove spaces if present from section name.
sectionName = strrep(sectionName,' ','');
% Clean up data.
sectData = regexprep(tdHTML(sectIndex),'\n+','.');
% Create structure.
s.(sectionName) = sectData;
end
可视化输出结构:
>> s
s =
struct with fields:
Date: "February 24, 2019"
Site: "Dolby Theatre.Hollywood, Los Angeles, California, U.S."
Preshowhosts: "Ashley Graham.Maria Menounos.Elaine Welteroth.Billy Porter.Ryan Seacrest. "
Producedby: "Donna Gigliotti.Glenn Weiss"
Directedby: "Glenn Weiss"
对于我的项目,我正在尝试从维基百科读取数据,我不太确定我该怎么做。
我主要关心的是事件的阅读、日期、地点和主题。 首先,我已经开始阅读上述第 91 届奥斯卡金像奖的信息。
我试过使用维基百科查询服务,但效果不大。
然后我在 URL 之后遇到了 API 解决方案和 运行, https://en.wikipedia.org/w/api.php?action=parse&format=json&prop=sections&page=91st_Academy_Awards
但是没有找到我要找的信息。
我正在尝试阅读下图中红框标记的信息,
谁能帮我解决这个问题,让我知道如何阅读上面提到的部分。
PS:我正在使用 Matlab 编写我的算法
一种可能的解决方案是使用 webread, and process the data using the functions from the Text Analytics Toolbox:
阅读网页% Read HTML data.
raw = webread('https://en.wikipedia.org/w/api.php?action=parse&format=json&prop=text&page=91st_Academy_Awards');
% Specify sections of interest.
SectionsOfInterest = ["Date","Site","Preshow hosts","Produced by","Directed by"];
% Parse HTML data.
myTree = htmlTree(raw.parse.text.x_);
% Find table element.
tableElements = findElement(myTree,'Table');
tableOfInterest = tableElements(1);
% Find header cell elements.
thElements = findElement(tableOfInterest,"th");
% Find cell elements.
tdElements = findElement(tableOfInterest,"td");
% Extract text.
thHTML = thElements.extractHTMLText;
tdHTML = tdElements.extractHTMLText;
for section = 1:numel(SectionsOfInterest)
sectionName = SectionsOfInterest(section);
sectIndex = strcmp(sectionName,thHTML);
% Remove spaces if present from section name.
sectionName = strrep(sectionName,' ','');
% Clean up data.
sectData = regexprep(tdHTML(sectIndex),'\n+','.');
% Create structure.
s.(sectionName) = sectData;
end
可视化输出结构:
>> s
s =
struct with fields:
Date: "February 24, 2019"
Site: "Dolby Theatre.Hollywood, Los Angeles, California, U.S."
Preshowhosts: "Ashley Graham.Maria Menounos.Elaine Welteroth.Billy Porter.Ryan Seacrest. "
Producedby: "Donna Gigliotti.Glenn Weiss"
Directedby: "Glenn Weiss"