В статьях Википедии могут быть шаблоны Infobox. Следующим звонком я могу получить первый раздел статьи, который включает Infobox.
http://en.wikipedia.org/w/api.php?action=parse&pageid=568801§ion=0&prop=wikitext
Мне нужен запрос, который вернет только данные Infobox. Возможно ли это?
Опираясь на ответ @ garry, вы можете сделать так, чтобы википедия проанализировала информационное окно в html для вас через параметр rvparse
, например, так:
http://en.wikipedia.org/w/api.php?action=query&prop=revisions&rvprop=content&format=json&titles=Scary%20Monsters%20and%20Nice%20Sprites&rvsection=0&rvparse
Обратите внимание, что ни один из методов не вернет просто информационное окно. Но из html-контента вы можете извлечь (например, посредством Beautifulsoup) элемент table
с классом infobox
.
В Python
вы делаете что-то вроде следующего
resp = requests.get(url).json()
page_one = next(iter(resp['query']['pages'].values()))
revisions = page_one.get('revisions', [])
html = next(iter(revisions[0].values()))
# now parse the html
Если на странице есть информационный блок справа, используйте этот URL, чтобы получить его в виде текста. Мой пример использует элемент Водород. Все, что вам нужно сделать, это заменить «Водород» своим названием.
https://en.wikipedia.org/w/index.php?action=raw&title=Template:Infobox%20hydrogen
Если вы ищете формат JSON, используйте этот URL, но это не красиво.
https://en.wikipedia.org/w/api.php?action=parse&page=Template:Infobox%20hydrogen&format=json