Мне нужно просто получить первый абзац страницы в Википедии. Контент должен быть в формате html, готов к отображению на моих сайтах (так что НИКАКОГО BBCODE или специального кода WIKIPEDIA!)
api
wikipedia
wikipedia-api
искриться
источник
источник
Ответы:
Есть способ получить весь «вводный раздел» без разбора html! Подобно ответу AnthonyS с дополнительным
explaintext
параметром, вы можете получить текст вступительного раздела в виде простого текста.запрос
Получение вступления Stack Overflow в виде простого текста:
https://en.wikipedia.org/w/api.php?format=json&action=query&prop=extracts&exintro&explaintext&redirects=1&titles=Stack%20Overflow
JSON Response
(предупреждения сняты)
Документация: API: query / prop = extracts
Изменить: добавлено,
&redirects=1
как рекомендуется в комментариях.источник
$extract = current((array)$data->query->pages)->extract;
. но «Замечание: попытка получить свойство не-объекта» продолжает появляться.На самом деле есть очень хорошая опора, называемая выдержками, которая может использоваться с запросами, разработанными специально для этой цели. Выдержки позволяют получить выдержки из статьи (усеченный текст статьи). Существует параметр exintro, который можно использовать для получения текста в нулевом разделе (без дополнительных ресурсов, таких как изображения или информационные поля). Вы также можете извлечь фрагменты с более высокой степенью детализации, например, с помощью определенного количества символов ( exchars ) или определенного количества предложений ( exsences )
Вот пример запроса http://en.wikipedia.org/w/api.php?action=query&prop=extracts&format=json&exintro=&titles=Stack%20Overflow и песочница API http://en.wikipedia.org/wiki/ Специально: ApiSandbox # action = query & prop = extracts & format = json & exintro = & title = Stack% 20Overflow, чтобы больше экспериментировать с этим запросом.
Обратите внимание, что если вы хотите первый абзац специально, вам все равно нужно выполнить дополнительный анализ, как указано в выбранном ответе. Разница в том, что ответ, возвращаемый этим запросом, короче, чем некоторые другие предложенные запросы API, потому что у вас нет дополнительных ресурсов, таких как изображения, в ответе API для анализа.
источник
С 2017 года Википедия предоставляет REST API с улучшенным кэшированием. В документации вы можете найти следующий API, который идеально подходит для вашего случая использования. (как это используется новой функцией предварительного просмотра страниц )
https://en.wikipedia.org/api/rest_v1/page/summary/Stack_Overflow
возвращает следующие данные, которые можно использовать для отображения суммы с небольшим эскизом:По умолчанию, он следует перенаправлениям (чтобы это
/api/rest_v1/page/summary/StackOverflow
тоже работало), но это можно отключить с помощью?redirect=false
Если вам нужен доступ к API из другого домена, вы можете установить заголовок CORS с помощью
&origin=
(например&origin=*
)Обновление 2019: API, кажется, возвращает более полезную информацию о странице.
источник
"other_tags" : "\"addr:country\"=>\"CW\",\"historic\"=>\"ruins\",\"name:nl\"=>\"Riffort\",\"wikidata\"=>\"Q4563360\",\"wikipedia\"=>\"nl:Riffort\""
Можем ли мы получить извлечение по QID?Этот код позволяет извлекать содержимое первого абзаца страницы в виде обычного текста.
Части этого ответа приходят отсюда и, следовательно, сюда . См. Документацию MediaWiki API для получения дополнительной информации.
источник
Да, есть. Например, если вы хотите получить содержимое первого раздела статьи Stack Overflow , используйте запрос, подобный следующему:
http://en.wikipedia.org/w/api.php?format=xml&action=query&prop=revisions&titles=Stack%20Overflow&rvprop=content&rvsection=0&rvparse
Части означают это:
format=xml
Возвращает форматер результата как XML. Другие варианты (например, JSON) доступны. Это не влияет на формат самого содержимого страницы, а только на формат данных.action=query&prop=revisions
: Получить информацию о ревизиях страницы. Поскольку мы не указываем, какая ревизия используется, используется последняя версия.titles=Stack%20Overflow
: Получить информацию о страницеStack Overflow
. Можно получить текст нескольких страниц за один раз, если разделить их имена|
.rvprop=content
: Вернуть содержимое (или текст) ревизии.rvsection=0
: Возврат только контента из раздела 0.rvparse
: Вернуть содержимое, проанализированное как HTML.Имейте в виду, что это возвращает весь первый раздел, включая такие вещи, как сноски («Для других целей…»), информационные поля или изображения.
Существует несколько библиотек для разных языков, которые облегчают работу с API, может быть, вам лучше использовать одну из них.
источник
&redirects=true
в конец ссылки гарантирует, что вы попадаете в пункт назначения, если таковой существует.Это код, который я сейчас использую для веб-сайта, который я делаю, и который должен получить первые абзацы / резюме / раздел 0 из статей Википедии, и все это делается в браузере (javascript на стороне клиента) благодаря магии JSONP! -> http://jsfiddle.net/gautamadude/HMJJg/1/
Он использует API Википедии для получения первых абзацев (называемых разделом 0) в HTML, например: http://en.wikipedia.org/w/api.php?format=json&action=parse&page=Stack_Overflow&prop=text§ion=0&callback=?
Затем он удаляет HTML и другие нежелательные данные, давая вам чистую строку сводки статьи, если вы хотите, с небольшой настройкой, получить HTML-тег «p» вокруг первых абзацев, но сейчас есть только новая строка характер между ними.
Код:
источник
Этот URL вернет сводку в формате xml.
Я создал функцию для получения описания ключевого слова из Википедии.
источник
Вы также можете получить контент, такой как первый пагаграф, через DBPedia, который берет контент Википедии и создает из него структурированную информацию (RDF) и делает ее доступной через API. DBPedia API - это SPARQL-интерфейс (на основе RDF), но он выводит JSON, и его довольно легко обернуть.
В качестве примера приведу очень простую библиотеку JS с именем WikipediaJS, которая может извлекать структурированное содержимое, включая краткий первый абзац: http://okfnlabs.org/wikipediajs/
Вы можете прочитать больше об этом в этом блоге: http://okfnlabs.org/blog/2012/09/10/wikipediajs-a-javascript-library-for-accessing-wikipedia-article-information.html
Код библиотеки JS можно найти здесь: https://github.com/okfn/wikipediajs/blob/master/wikipedia.js
источник
В
abstract.xml.gz
свалке звучит , как тот , который вы хотите.источник
Если вы просто ищете текст, который затем можете разделить, но не хотите использовать API, взгляните на en.wikipedia.org/w/index.php?title=Elephant&action=raw
источник
Мой подход был следующим (в PHP):
$utf8html
возможно, потребуется дополнительная очистка, но это в основном все.источник
Я попробовал решения @Michael Rapadas и @ Krinkle, но в моем случае мне было трудно найти некоторые статьи в зависимости от заглавных букв. Как здесь:
https://en.wikipedia.org/w/api.php?format=json&action=query&prop=extracts&exintro=&exsentences=1&explaintext=&titles=Led%20zeppelin
Обратите внимание, что я усек ответ
exsentences=1
Видимо "нормализация заголовка" не работала правильно:
Я знаю, что мог бы легко решить проблему с заглавными буквами, но было также неудобно приводить объект к массиву.
Поэтому, поскольку я действительно хотел получить самый первый абзац известного и определенного поиска (без риска получить информацию из других статей), я сделал это так:
https://en.wikipedia.org/w/api.php?action=opensearch&search=led%20zeppelin&limit=1&format=json
Обратите внимание, что в этом случае я сделал усечение с
limit=1
Сюда:
Но мы должны быть осторожны с капитализацией нашего поиска.
Дополнительная информация: https://www.mediawiki.org/wiki/API:Opensearch
источник