Engee 文档
Notebook

通过 API 搜索维基百科文章

本示例介绍了如何使用 Engee 的维基百科 API,特别是发送搜索查询和显示搜索结果。

简介

维基百科 API 是一种网络服务,可提供对维基功能的访问,如身份验证、页面操作、搜索和其他操作。API 由 MediaWiki 引擎驱动,使用 PHP 编写的 api.php 处理程序。你可以使用直接提交请求或使用库与 API 进行交互。处理程序通过向处理程序的网址发送 HTTP 请求来接受请求。

开始使用

在本示例中,我们将使用HTTP.jl 库通过 URL 检索查询结果,并使用JSON.jl 库解析 JSON 格式的响应。

让我们下载并安装必要的库:

In [ ]:
import Pkg;
Pkg.add(["HTTP", "JSON"]);

连接程序库

In [ ]:
using HTTP, JSON;

搜索维基百科文章的功能

以下函数根据搜索查询生成一个 URL,发送 GET 请求,检索并打印出 对查询的响应。

In [ ]:
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
Out[0]:
search_wikipedia (generic function with 1 method)

程序操作

让我们把搜索查询传递给创建的函数:

In [ ]:
# Пример использования
search_wikipedia("Julia programming language")
Результаты поиска для "Julia programming language":
Заголовок: Julia (язык программирования)
Описание: 24 мая 2013 года. Stephan Boyer. A Graphical Front End for the <span class="searchmatch">Julia</span> <span class="searchmatch">Programming</span> <span class="searchmatch">Language</span> (англ.). Массачусетский технологический институт (декабрь 2011)
Ссылка: https://ru.wikipedia.org/wiki/Julia_(язык_программирования)
--------------------------------------------------
Заголовок: Биоэквивалентность
Описание: Дата обращения: 9 июля 2019. Архивировано 9 июля 2019 года. The <span class="searchmatch">Julia</span> <span class="searchmatch">Programming</span> <span class="searchmatch">Language</span>  (неопр.). https://julialang.org. Дата обращения: 9 июня 2022
Ссылка: https://ru.wikipedia.org/wiki/Биоэквивалентность
--------------------------------------------------
Заголовок: LLVM
Описание: Graphical G <span class="searchmatch">Programming</span> <span class="searchmatch">Language</span>, Halide, Haskell, Java (байткод), JavaScript, <span class="searchmatch">Julia</span>, Kotlin, Lua, Objective-C, OpenGL Shading <span class="searchmatch">Language</span>, Ruby, Rust,
Ссылка: https://ru.wikipedia.org/wiki/LLVM
--------------------------------------------------
Заголовок: Python
Описание: 2007 года. Why We Created <span class="searchmatch">Julia</span>  (неопр.). <span class="searchmatch">Julia</span> website (февраль 2012). — «We want something as usable for general <span class="searchmatch">programming</span> as Python [...]». Дата обращения:
Ссылка: https://ru.wikipedia.org/wiki/Python
--------------------------------------------------
Заголовок: Хронология языков программирования
Описание: <span class="searchmatch">programming</span> <span class="searchmatch">language</span> Проект Bend развивает высокоуровневый язык для параллельных вычислений на GPU Online encyclopedia for the history of <span class="searchmatch">programming</span>
Ссылка: https://ru.wikipedia.org/wiki/Хронология_языков_программирования
--------------------------------------------------
Заголовок: Язык программирования
Описание: Ward. <span class="searchmatch">Language</span> Oriented <span class="searchmatch">Programming</span>. — Computer Science Department, Science Labs, 1994. Ian Joyner. A Critique of C++ and <span class="searchmatch">Programming</span> and <span class="searchmatch">Language</span> Trends
Ссылка: https://ru.wikipedia.org/wiki/Язык_программирования
--------------------------------------------------
Заголовок: Processing
Описание: Processing <span class="searchmatch">Language</span> (1st ed.), Wiley, p. 384, ISBN 0-470-37548-5 Reas, Casey; Fry, Ben; Maeda, John (30 сентября 2007), Processing: A <span class="searchmatch">Programming</span> Handbook
Ссылка: https://ru.wikipedia.org/wiki/Processing
--------------------------------------------------
Заголовок: Гомоиконичность
Описание: 3 марта 2016 на Wayback Machine, Digital Humanities 2012 conference proceedings. <span class="searchmatch">Language</span> Notes for <span class="searchmatch">Programming</span> <span class="searchmatch">Language</span> Experts (недоступная ссылка)
Ссылка: https://ru.wikipedia.org/wiki/Гомоиконичность
--------------------------------------------------
Заголовок: Старение мозга
Описание: Tang, Yizhe; Zhang, Hai; Yin, Ye; Li, Bo; et al. (2013). &quot;Hypothalamic <span class="searchmatch">programming</span> of systemic ageing involving IKK-[bgr], NF-[kgr]B and GnRH&quot;. Nature.
Ссылка: https://ru.wikipedia.org/wiki/Старение_мозга
--------------------------------------------------
Заголовок: Content Management Framework
Описание: application frameworks with regards to rapid development Bestwebframeworks, Choose your <span class="searchmatch">programming</span> <span class="searchmatch">language</span> to compare web frameworks Web Framework Benchmarks
Ссылка: https://ru.wikipedia.org/wiki/Content_Management_Framework
--------------------------------------------------

如您所见,创建函数会根据我们为其生成的搜索查询生成答案。

结论

在本示例中,我们使用 Engee 的功能和 Julia 语言库处理 HTTP 请求和 JSON 对象,生成并提取对俄语维基百科的搜索查询。