Как получить контент Википедии с помощью API Википедии?
Я хочу получить первый абзац статьи в Википедии.
Что такое запрос API для этого?
9 ответов
см. Этот раздел на MediaWiki docs
Это ключевые параметры.
prop=revisions&rvprop=content&rvsection=0
rvsection = 0 указывает на возврат только ведущего раздела.
посмотреть в этом примере.
чтобы получить HTML, вы можете использовать аналогично использовать действие=разбор http://en.wikipedia.org/w/api.php?action=parse§ion=0&prop=text&page=pizza
обратите внимание, что вам придется удалить любые шаблоны или инфобоксы.
посмотреть есть ли чистый API Википедии только для получения сводки контента? для других предлагаемых решений. Вот один из них, который я предложил:
есть на самом деле очень приятно prop под названием выдержки это можно использовать с запросами, разработанными специально для этой цели. Выдержки позволяют получить выдержки статьи (усеченный текст статьи). Существует параметр exintro это можно использовать для получить текст в нулевой секции (никаких дополнительных ресурсов, таких как изображения или инфобоксы). Вы также можете извлекать экстракты с более тонкой детализацией, например, определенным количеством символов (exchars) или на определенное количество предложений(exsentences)
здесь образец запроса http://en.wikipedia.org/w/api.php?action=query&prop=extracts&format=json&exintro=&titles=Stack%20Overflow и API-интерфейс песочница http://en.wikipedia.org/wiki/Special:ApiSandbox#action=query&prop=extracts&format=json&exintro=&titles=Stack%20Overflow чтобы поэкспериментировать с этим запросом.
обратите внимание, что если вы хотите первый абзац конкретно, вам все равно нужно получить первый тег. Однако в этом вызове API нет дополнительных ресурсов, таких как изображения для анализа. Если вы удовлетворены этим вступлением, вы можете получить текст, запустив функцию в PHP strip_tag которые удаляют теги html.
Я делаю это так:
https://en.wikipedia.org/w/api.php?action=opensearch&search=bee&limit=1&format=json
ответ, который вы получаете, - это массив с данными, которые легко разобрать:
[
"bee",
[
"Bee"
],
[
"Bees are flying insects closely related to wasps and ants, known for their role in pollination and, in the case of the best-known bee species, the European honey bee, for producing honey and beeswax."
],
[
"https://en.wikipedia.org/wiki/Bee"
]
]
чтобы получить только первый абзац limit=1
это то, что вам нужно.
Если вам нужно сделать это для большого количества статей, то вместо того, чтобы запрашивать веб-сайт напрямую, рассмотрите возможность загрузки дампа базы данных Википедии, а затем доступа к нему через API, такой как JWPL.
вы можете получить введение статьи в Википедии, запросив такие страницы, как https://en.wikipedia.org/w/api.php?format=json&action=query&prop=extracts&exintro=&explaintext=&titles=java - ... Вам просто нужно проанализировать файл json, и результат-простой текст, который был очищен, включая удаление ссылок и ссылок.
<script>
function dowiki(place) {
var URL = 'https://en.wikipedia.org/w/api.php?format=json&action=query&prop=extracts&exintro=&explaintext=';
URL += "&titles=" + place;
URL += "&rvprop=content";
URL += "&callback=?";
$.getJSON(URL, function (data) {
var obj = data.query.pages;
var ob = Object.keys(obj)[0];
console.log(obj[ob]["extract"]);
try{
document.getElementById('Label11').textContent = obj[ob]["extract"];
}
catch (err) {
document.getElementById('Label11').textContent = err.message;
}
});
}
</script>
вы можете загрузить базу данных Википедии напрямую и проанализировать все страницы в XML с помощью Парсер Wiki, который является отдельным приложением. Первый абзац является отдельным узлом в результирующем XML.
кроме того, вы можете извлечь первый абзац из его текстового вывода.
вы можете использовать JQuery для этого. Сначала создайте url с соответствующими параметрами. Проверьте это ссылке чтобы понять, что означают параметры. Тогда используйте $.ajax()
метод для извлечения статей. Обратите внимание, что Википедия не разрешает запрос cross origin. Вот почему мы используем dataType : jsonp
в запросе.
var wikiURL = "https://en.wikipedia.org/w/api.php";
wikiURL += '?' + $.param({
'action' : 'opensearch',
'search' : 'your_search_term',
'prop' : 'revisions',
'rvprop' : 'content',
'format' : 'json',
'limit' : 10
});
$.ajax( {
url: wikiURL,
dataType: 'jsonp',
success: function(data) {
console.log(data);
}
} );
можно использовать extract_html
поле итоговой конечной точки REST для этого: например https://en.wikipedia.org/api/rest_v1/page/summary/Cat.
Примечание: это направлено на просто содержание немного, удалив большинство произношений, в основном в скобках в некоторых случаях.