Подтвердить что ты не робот

Получать текстовое содержимое со страницы 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?

4b9b3361

Ответ 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=: разрешить проблемы с перенаправлением.

Ответ 7

Страницы Wiki без каких-либо символов форматирования не будут иметь большого смысла во многих случаях.

Вы можете отформатировать форматирование самостоятельно, если хотите, но в этом процессе вы сломаете некоторые вещи.

(Если вы не создаете нечто вроде поисковой системы, в этом случае вам понадобятся только текстовые части и могут полностью игнорировать символы форматирования)

Ответ 8

Пользователи Python, приходящие на этот вопрос, могут быть заинтересованы в wikipedia module (docs):

import wikpedia
wikipedia.set_lang('de')
page = wikipedia.page('Wikipedia')
print(page.content)

Каждое форматирование, за исключением разделов (==), отделяется.

Ответ 10

Вы можете сделать одну вещь после того, как содержимое будет внесено на вашу страницу - вы можете использовать функцию PHP strip_tags(), чтобы удалить теги HTML.