Получение текстового содержимого со страницы mediawiki через API
-
06-07-2019 - |
Вопрос
Я совсем новичок в MediaWiki, и теперь у меня возникла небольшая проблема.У меня есть заголовок некоторой вики-страницы, и я хочу получить только текст указанной страницы, используя api.php, но все, что я нашел в API, - это способ получить вики-содержимое страницы (с вики-разметкой).Я использовал этот HTTP-запрос...
/api.php?action=query&prop=revisions&rvlimit=1&rvprop=content&format=xml&titles=test
Но мне нужно только текстовое содержимое, без вики-разметки.Возможно ли это с помощью MediaWiki API?
Решение
Я не думаю, что с помощью API возможно получить только текст.
Что сработало для меня, так это запросить HTML-страницу (используя обычный URL-адрес, который вы бы использовали в браузере) и удалить HTML-теги под разделом содержимого.
Редактировать:
Я добился хороших результатов, используя Анализатор HTML для Java.В нем есть примеры того, как удалить HTML-теги под заданным DIV.
Другие советы
Используйте action = parse
, чтобы получить html:
/api.php?action=parse&page=test
Один из способов получить текст из html - загрузить его в браузер и пройтись по узлам, просматривая только текстовые узлы, используя JavaScript. Р>
Расширение API TextExtracts делает то, что вы просите. Используйте 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 р>
Используйте 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.