Получить текстовое содержимое со страницы MediaWiki через API
Я довольно новичок в MediaWiki, и теперь у меня есть небольшая проблема. У меня есть заголовок какой-то вики-страницы, и я хочу получить только текст упомянутой страницы, используя api.php, но все, что я нашел в API, - это способ получения вики-контента страницы (с помощью вики-разметки).). Я использовал этот HTTP-запрос...
/api.php?action=query&prop=revisions&rvlimit=1&rvprop=content&format=xml&titles=test
Но мне нужен только текстовый контент, без разметки вики. Это возможно с MediaWiki API?
10 ответов
Я не думаю, что с помощью API можно получить только текст.
Что мне помогло, так это запросить страницу HTML (используя обычный URL, который вы бы использовали в браузере) и убрать теги HTML под div содержимого.
РЕДАКТИРОВАТЬ:
У меня были хорошие результаты с использованием HTML Parser для Java. В нем есть примеры того, как вырезать теги HTML под заданным DIV.
Использование action=parse
чтобы получить HTML:
http://en.wikipedia.org/w/api.php?action=parse&page=test
Один из способов получить текст из html - загрузить его в браузер и пройтись по узлам, ища только текстовые узлы, используя JavaScript.
Расширение TextExtracts API делает то, что вы просите. использование prop=extracts
чтобы получить убранный ответ. Например, эта ссылка даст вам очищенный текст для статьи переполнения стека. Что еще приятно, так это то, что он все еще включает теги разделов, так что вы можете идентифицировать отдельные разделы статьи.
Просто чтобы включить видимую ссылку в моем ответе, ссылка выше выглядит так:
/api.php?format=xml&action=query&prop=extracts&titles=Stack%20Overflow&redirects=true
Редактировать: Как упоминал Amr, TextExtracts является расширением MediaWiki, поэтому оно не обязательно будет доступно для каждого сайта MediaWiki.
Добавление ?action=raw
в конце страницы MediaWiki возвращайте последнее содержимое в необработанном текстовом формате. Например: - https://en.wikipedia.org/wiki/Main_Page?action=raw
Вы можете получить вики-данные в текстовом формате из 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=
: Решить проблемы с перенаправлением.
Это самый простой способ: http://en.wikipedia.org/w/api.php?format=xml&action=query&titles=Albert%20Einstein&prop=revisions&rvprop=content
Пользователи Python, приходящие на этот вопрос, могут быть заинтересованы в wikipedia
модуль ( документы):
import wikpedia
wikipedia.set_lang('de')
page = wikipedia.page('Wikipedia')
print(page.content)
Каждое форматирование, кроме разделов (==
) полосатый прочь
Используйте 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
Вики-страницы без каких-либо символов форматирования не имеют большого смысла во многих случаях.
Вы можете удалить форматирование самостоятельно, если хотите, но в процессе вы нарушите некоторые вещи.
(Если вы не создаете что-то вроде поисковой системы, в этом случае вам понадобятся только текстовые части и вы можете полностью игнорировать форматирование символов)
Вы можете сделать одну вещь после того, как содержимое будет перенесено на вашу страницу - вы можете использовать функцию PHP strip_tags()
удалить теги HTML.