Engee 文档
Notebook

通过API搜索维基百科文章

此示例描述了使用Engee的Wikipedia API的示例,更具体地说,发送搜索查询并显示搜索结果。

导言

Wikipedia API是一个web服务,提供对wiki功能的访问,如身份验证,页面操作,搜索和其他操作。 该API基于MediaWiki引擎,并使用处理程序api。php,用PHP编写。 您可以使用直接请求发送或库与API交互。 处理程序通过向处理程序的地址(url)发送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对象,以生成并提取俄语维基百科的搜索查询。