Как получить Infobox из статьи в Википедии с помощью Mediawiki API?

В статьях Википедии могут быть шаблоны Infobox. Следующим звонком я могу получить первый раздел статьи, который включает Infobox.

http://en.wikipedia.org/w/api.php?action=parse&pageid=568801&section=0&prop=wikitext

Мне нужен запрос, который вернет только данные Infobox. Возможно ли это?

27
задан Termininja 9 December 2016 в 19:46
поделиться

2 ответа

Опираясь на ответ @ 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 
2
ответ дан 28 November 2019 в 05:16
поделиться

Если на странице есть информационный блок справа, используйте этот 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

2
ответ дан 28 November 2019 в 05:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: