使用 DuckDuckGo API 实现多种搜索功能

在日常生活中,我经常使用搜索引擎来查找信息,如谷歌和百度。然而,当我想通过 API 来实现这一功能时,会发现这些搜索引擎并没有提供足够的免费 API 服务。如果有这样的免费 API, 就能定时获取“关注实体”的相关内容,并使用大语言模型如 ChatGPT 或本地模型来总结, 最终定时输送整理好的信息到我们自己。相当于自己能构建一个建议的定制的智能秘书。

谷歌的免费 API 每日查询限额较小,而通过爬虫进行搜索又非常麻烦。如果有一个搜索引擎能提供免费不限额的 API 服务,那将会非常便利。今天,我们将介绍 DuckDuckGo,它提供了这样的功能。

DuckDuckGo API 简介

DuckDuckGo 是一个较大的搜索引擎,其英文搜索质量较好,中文搜索质量虽然不及百度和谷歌,但也足够使用。本文将介绍如何使用 DuckDuckGo 的搜索 API。

安装 DuckDuckGo 包

首先,需要安装 DuckDuckGo 的 Python 包:

pip install duckduckgo_search

使用 DuckDuckGo 搜索内容

下面的示例代码展示了如何使用 DuckDuckGo 搜索内容。需要注意的是,DuckDuckGo 国内请求速度不佳,建议加 Proxy 使用。

from duckduckgo_search import DDGS
from pprint import pprint

with DDGS() as ddgs:
    pprint([r for r in ddgs.text("大模型", region='cn-zh', max_results=10)])

通过上面的代码,我们可以看到 DDGS 返回了各个搜索条目的标题、简介和网址。如果我们要关注某个内容的最新热点,可以使用该接口。

使用 DuckDuckGo 搜索新闻

下面的示例展示了如何使用 DuckDuckGo 搜索新闻。相比直接搜索,每条新闻条目还包含相关图片。

from duckduckgo_search import DDGS
from pprint import pprint

with DDGS() as ddgs:
    pprint([r for r in ddgs.news("CHATGPT", region='cn-zh', max_results=10)])

基于这个功能,可以通过添加适当的开发,构建一个简单的 RSS 关键词新闻源。定时通过 DDGS 获取新闻,生成 RSS 数据。

使用 DuckDuckGo 搜索图片

下面的示例展示了如何使用 DuckDuckGo 搜索图片。

from duckduckgo_search import DDGS
from pprint import pprint

with DDGS() as ddgs:
    pprint([r for r in ddgs.images("刘亦菲", region='cn-zh', max_results=10)])

搜索图片时,返回的结果包括资源链接和预览图 URL,可以直接下载相关图片。

使用 DuckDuckGo 搜索视频

下面的示例展示了如何使用 DuckDuckGo 搜索视频。

from duckduckgo_search import DDGS
from pprint import pprint

with DDGS() as ddgs:
    pprint([r for r in ddgs.videos("搞笑视频", region='cn-zh', max_results=10)])

使用 DuckDuckGo 进行翻译

DuckDuckGo 还可以作为免费的多语言翻译 API 使用。下面的示例展示了如何实现这一功能。

from duckduckgo_search import DDGS
from pprint import pprint

with DDGS() as ddgs:
    pprint([r for r in ddgs.translate("搞笑视频", region='cn-zh', max_results=10)])

虽然翻译效果一般,但由于免费且不限量,依然是一个不错的选择。