Я хочу получить первый абзац статьи в Википедии.
Что такое запрос API для этого?
Я хочу получить первый абзац статьи в Википедии.
Что такое запрос API для этого?
Смотрите раздел Документы MediaWiki
Это ключевые параметры.
prop=revisions&rvprop=content&rvsection=0
rvsection = 0 указывает только на возврат ведущего раздела.
См. этот пример.
Чтобы получить HTML, вы можете использовать аналогичное использование action = parse http://en.wikipedia.org/w/api.php?action=parse§ion=0&prop=text&page=pizza
Обратите внимание, что вам придется вычеркнуть любые шаблоны или инфобокс.
См. Есть ли чистый API-интерфейс для википедии только для получения резюме резюме? для других предлагаемых решений. Вот что я предложил:
На самом деле существует очень хороший prop, называемый extracts, который может использоваться с запросами, разработанными специально для этой цели. Экстракты позволяют получать выдержки из статьи (усеченный текст статьи). Существует параметр exintro, который можно использовать для извлечения текста в нулевом разделе (без дополнительных ресурсов, таких как изображения или инфобокс). Вы также можете извлекать экстракты с более высокой степенью детализации, например, определенным количеством символов (обменов) или определенным количеством предложений ( 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
- это то, что вам нужно.
Если вам нужно сделать это для большого количества статей, то вместо прямого запроса на веб-сайт рассмотрите возможность загрузки дампа базы данных Wikipedia, а затем доступа к нему через 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>
Вы можете напрямую загрузить базу данных Wikipedia и проанализировать все страницы в XML с помощью Wiki Parser, который является автономным приложением. Первый параграф представляет собой отдельный node в полученном XML.
В качестве альтернативы вы можете извлечь первый абзац из своего текстового вывода.
Вы можете использовать JQuery для этого. Сначала создайте URL с соответствующими параметрами. Проверьте ссылку, чтобы понять, что означают параметры. Затем используйте метод $.ajax()
для извлечения статей. Обратите внимание, что wikipedia не разрешает запрос на перекрестный поиск. Вот почему мы используем 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);
}
} );