Получать текстовое содержимое со страницы mediawiki через API
Я новичок в MediaWiki, и теперь у меня проблема.
У меня есть заголовок страницы Wiki, и я хочу получить только текст указанной страницы, используя api.php, но все, что я нашел в API, - это способ получить содержимое Wiki страницы (с разметкой wiki). Я использовал этот HTTP-запрос...
/api.php?action=query&prop=revisions&rvlimit=1&rvprop=content&format=xml&titles=test
Но мне нужен только текстовый контент без разметки Wiki.
Возможно ли это с помощью API MediaWiki?
Ответы
Ответ 1
Я не думаю, что с помощью API можно просто получить текст.
То, что сработало для меня, - это запросить HTML-страницу (используя обычный URL-адрес, который будет использоваться в браузере) и вычеркнуть теги HTML под содержимым div.
EDIT:
У меня были хорошие результаты, используя HTML Parser для Java. В нем есть примеры того, как вырезать HTML-теги под данным DIV.
Ответ 2
Используйте action=parse
, чтобы получить html:
/api.php?action=parse&page=test
Один из способов получить текст из html - загрузить его в браузер и пройти узлы, глядя только на текстовые узлы, используя JavaScript.
Ответ 3
Расширение TextExtracts API делает то, о чем вы просите. Используйте prop=extracts
, чтобы получить очищенный ответ. Например, эта ссылка даст вам очищенный текст для статьи о переполнении стека. Что также приятно, так это то, что он по-прежнему содержит теги секций, поэтому вы можете идентифицировать отдельные разделы статьи.
Чтобы включить видимую ссылку в мой ответ, приведенная выше ссылка выглядит следующим образом:
/api.php?format=xml&action=query&prop=extracts&titles=Stack%20Overflow&redirects=true
Изменить: Как упоминал Амр, TextExtracts является расширением для MediaWiki, поэтому он не обязательно будет доступен для каждого сайта MediaWiki.
Ответ 4
Добавление ?action=raw
в конце страницы MediaWiki возвращает последний контент в формате необработанного текста. Например: - https://en.wikipedia.org/wiki/Main_Page?action=raw
Ответ 5
Вы можете получить данные вики в текстовом формате из API с помощью параметра explaintext
. Кроме того, если вам нужно получить доступ ко многим сведениям о титрах, вы можете получить все данные вики-титры за один раз. Используйте символ трубы |
для разделения каждого заголовка. Например, этот вызов API будет возвращать данные с страниц "Google" и "Yahoo":
http://en.wikipedia.org/w/api.php?format=json&action=query&prop=extracts&exlimit=max&explaintext&exintro&titles=Yahoo|Google&redirects=
Параметры:
-
explaintext
: Возвращает выдержки как обычный текст вместо ограниченного HTML.
-
exlimit=max
: Верните несколько результатов. Максимум в настоящее время составляет 20.
-
exintro
: Возвращает только содержимое до первого раздела. Если вы хотите получить полные данные, просто удалите это.
-
redirects=
: разрешить проблемы с перенаправлением.
Ответ 6
Это самый простой способ:
http://en.wikipedia.org/w/api.php?format=xml&action=query&titles=Albert%20Einstein&prop=revisions&rvprop=content
Ответ 7
Страницы Wiki без каких-либо символов форматирования не будут иметь большого смысла во многих случаях.
Вы можете отформатировать форматирование самостоятельно, если хотите, но в этом процессе вы сломаете некоторые вещи.
(Если вы не создаете нечто вроде поисковой системы, в этом случае вам понадобятся только текстовые части и могут полностью игнорировать символы форматирования)
Ответ 8
Пользователи Python, приходящие на этот вопрос, могут быть заинтересованы в wikipedia
module (docs):
import wikpedia
wikipedia.set_lang('de')
page = wikipedia.page('Wikipedia')
print(page.content)
Каждое форматирование, за исключением разделов (==
), отделяется.
Ответ 9
Используйте action = render, чтобы получить самую чистую возможную страницу:
https://wiki.eclipse.org/Tip_of_the_Day/Eclipse_Tips/Now_where_was_I?action=render
против
https://wiki.eclipse.org/Tip_of_the_Day/Eclipse_Tips/Now_where_was_I
Ответ 10
Вы можете сделать одну вещь после того, как содержимое будет внесено на вашу страницу - вы можете использовать функцию PHP strip_tags()
, чтобы удалить теги HTML.