Поиск статей в Википедии по API¶
В этом примере описан пример работы с API Википедии из Engee, а конкретнее - отправка поискового запроса и вывод результатов поиска.
Введение¶
API Википедии — это веб-служба, которая обеспечивает доступ к функциям вики, таким как аутентификация, операции над страницами, поиск и другие операции. API работает на основе движка MediaWiki и использует обработчик api.php, написанный на PHP. Для взаимодействия с API можно использовать прямую отправку запросов или библиотеки. Обработчик принимает запросы через отправку HTTP запросов на адрес(url) обработчика.
Начало работы¶
В этом примере мы будем использовать библиотеку HTTP.jl
для получения результатов запроса по URL и библиотеку JSON.jl
для парсинка ответа в формате JSON.
Скачаем и установим необходимые библиотеки:
import Pkg;
Pkg.add(["HTTP", "JSON"]);
Подключим библиотеки:
using HTTP, JSON;
Функция для поиска статей из Википедии¶
Следующая функция формирует URL из поискового запроса, отправляет GET-запрос, извлекает и выводит на печать ответ на запрос.
function search_wikipedia(query::String)
# Кодируем запрос для URL
encoded_query = replace(query, " " => "%20")
# Формируем URL для запроса к API Википедии
url = "https://ru.wikipedia.org/w/api.php?action=query&list=search&srsearch=$encoded_query&format=json"
# Отправляем GET-запрос
response = HTTP.get(url)
# Проверяем статус ответа
if response.status != 200
error("Ошибка при запросе к API Википедии: статус $(response.status)")
end
# Парсим JSON-ответ
data = JSON.parse(String(response.body))
# Извлекаем результаты поиска
search_results = data["query"]["search"]
# Выводим результаты
if isempty(search_results)
println("По вашему запросу ничего не найдено.")
else
println("Результаты поиска для \"$query\":")
for result in search_results
println("Заголовок: ", result["title"])
println("Описание: ", result["snippet"])
println("Ссылка: https://ru.wikipedia.org/wiki/", replace(result["title"], " " => "_"))
println("-"^50)
end
end
end
Работа программы¶
Передадим созданной функции поисковой запрос:
# Пример использования
search_wikipedia("Julia programming language")
Созданная функция, как можно видеть, формирует ответ согласно поисковому запросу, который мы для неё сформировали.
Вывод¶
В этом примере мы воспользовались возможностями Engee и библиотеками языка Julia для работы с HTTP запросами и JSON объектами для формирования и извлечения поискового запроса в русскоязычную Википедию.