使用 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 pprintwith 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 pprintwith 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 pprintwith 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 pprintwith 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 pprintwith DDGS() as ddgs:pprint([r for r in ddgs.translate("搞笑视频", region='cn-zh', max_results=10)])

虽然翻译效果一般,但由于免费且不限量,依然是一个不错的选择。
下面是公众号,欢迎扫描二维码,谢谢关注,谢谢支持!
公众号名称: 清易AI
欢迎来到“清易AI”!这里将为你揭开在家用电脑上轻松部署AI的神秘面纱。探索LLM、TTS、ASR等AI模型桌面部署,通过简洁而深入的技术文章,让你在AI的世界中轻松自如。成为家庭AI工程师,从容享受智能的乐趣!
相关文章:
使用 DuckDuckGo API 实现多种搜索功能
在日常生活中,我经常使用搜索引擎来查找信息,如谷歌和百度。然而,当我想通过 API 来实现这一功能时,会发现这些搜索引擎并没有提供足够的免费 API 服务。如果有这样的免费 API, 就能定时获取“关注实体”的相关内容,并…...
【DrissionPage爬虫库 1】两种模式分别爬取Gitee开源项目
文章目录 DrissionPage爬虫库简介1. 浏览器操控模式(类似于游戏中的后台模拟鼠标键盘)2. 数据包收发模式(类似于游戏中的协议封包) 实战中学习需求:爬取Gitee开源项目的标题与描述解决方案1:用数据包方式获…...
leetcode 115.不同的子序列
思路:LCS类dp 这道题的思考思路其实就是把以两个字符串结尾作为状态方程。 dp[i][j]的意义就是在s字符串在以s[i]结尾的字符串的情况下,所能匹配出t字符串以t[j]结尾的字符串个数。 本质上其实是一个LCS类的状态方程,只不过是意义不一样了…...
二叉树的顺序实现-堆
一、什么是堆 在数据结构中,堆(Heap)是一种特殊的树形数据结构,用数组存储,通常被用来实现优先队列。 堆具有以下特点: 堆是一棵完全二叉树(Complete Binary Tree),即…...
【Maven】Maven主要知识点目录整理
1. Maven的基本概念 作者相关文章链接: 1、【Maven】简介_下载安装-CSDN博客 定义:Maven是Apache的一个开源项目,是Java开发环境中用于管理和构建项目,以及维护依赖关系的强大软件项目管理工具。作用:简化了项目依赖…...
Coolmuster Android Assistant: 手机数据管理的全能助手
在数字化时代,智能手机不仅是通讯工具,更是个人数据的中心。随着数据量的不断增加,如何有效管理和保护这些数据成为了一个重要议题。Coolmuster Android Assistant应运而生,它是一款专为安卓用户设计的综合数据管理软件࿰…...
03-树3 Tree Traversals Again(浙大数据结构PTA习题)
03-树3 Tree Traversals Again 分数 25 作者 陈越 An inorder binary tree traversal can be implemented in a non-recursive way with a stack. For example, suppose that when a 6-node binary tree (with the keys numbered from 1 to 6) is traversed, th…...
Java项目对接redis,客户端是选Redisson、Lettuce还是Jedis?
JAVA项目对接redis,客户端是选Redisson、Lettuce还是Jedis? 一、客户端简介1. Jedis介绍2. Lettuce介绍3. Redisson介绍 二、横向对比三、选型说明 在实际的项目开发中,对于一个需要对接Redis的项目来说,就面临着选择合适的Redis客…...
AngularJS Web前端框架:深入探索与应用实践
AngularJS Web前端框架:深入探索与应用实践 AngularJS,作为一款强大的Web前端框架,为开发者提供了丰富的功能和工具,使得构建复杂且交互性强的Web应用变得更为便捷。本文将从四个方面、五个方面、六个方面和七个方面对AngularJS进…...
SQL 入门:使用 MySQL 进行数据库操作
SQL 入门:使用 MySQL 进行数据库操作 目录 引言SQL 基础 SQL 语言概述MySQL 简介 数据库设计基础 数据库与表的设计常见数据类型 MySQL 安装与配置 安装 MySQL基本配置与连接 基本 SQL 语句 数据库的创建与删除表的创建、修改与删除数据插入、更新与删除 数据查询…...
window安装ffmpeg播放本地摄像头视频
1、安装ffmpeg ffmpeg官方网站:FFmpeg 下载后解压文件夹名为ffmpeg 2、设置环境变量 目录 1、安装ffmpeg 设置环境变量 以F:\software\after\ffmpeg\bin为例 在命令行中输入ffmpeg出现下方代表安装成功 3、通过ffmpeg播放本地电脑摄像头 鼠标右击开始按钮&…...
【嵌入式DIY实例】-OLED显示网络时钟
OLED显示网络时钟 文章目录 OLED显示网络时钟1、硬件准备与接线2、代码实现在上一个ESP8266 NodeMCU文章中,我们用DS3231 RTC芯片和SSD1306 OLED制作了一个简单的实时时钟,时间和日期显示在SSD1306屏幕上,并且可以通过两个按钮进行设置。 在本中,我们将使用ESP 8266 NodeMC…...
【线程相关知识】
今日内容概要 开启线程的两种方式TCP服务端实现并发效果线程对象的join方法线程间数据共享线程对象属性及其他方法守护线程线程互斥锁GIL全局解释器锁多进程与多线程的实际应用场景 今日内容详细 开启线程的两种方式 # import time # from multiprocessing import Process #…...
鸿蒙ArkTS声明式开发:跨平台支持列表【透明度设置】 通用属性
透明度设置 设置组件的透明度。 说明: 开发前请熟悉鸿蒙开发指导文档: gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md点击或者复制转到。 从API Version 7开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版…...
【SQL学习进阶】从入门到高级应用(九)
文章目录 子查询什么是子查询where后面使用子查询from后面使用子查询select后面使用子查询exists、not existsin和exists区别 union&union alllimit 🌈你好呀!我是 山顶风景独好 💕欢迎来到我的博客,很高兴能够在这里和您见面…...
Web前端三大主流框架技术分享
在当今快速发展的互联网时代,Web前端技术作为连接用户与服务的桥梁,其重要性不言而喻。随着技术的不断进步,为了提升开发效率、优化用户体验,一系列强大的前端框架应运而生。其中,Angular、React和Vue.js作为当前最为主…...
dockers安装mysql
1.dockerhub上搜索自己需要安装得镜像版本 dockerhub网址:https://hub-stage.docker.com docker pull mysql:5.7 #下载自己需要得版本2.启动容器实例,并且挂载容器数据卷 docker run -d -p 3306:3306 --privilegedtrue \ -v /home/mysql/log:/var/log/…...
100道面试必会算法-27-美团2024面试第一题-前缀和矩阵
100道面试必会算法-27-美团2024面试第一题-前缀和矩阵 问题解读 给定一个 n x n 的二进制矩阵,每个元素是 0 或 1。我们的任务是计算矩阵中所有边长为 k 的子矩阵中,包含特定数量 1 的情况。例如,我们希望找到所有边长为 k 的子矩阵中包含 k…...
从摇一摇到弹窗,AD无处不在?为了不再受打扰,推荐几款好用的屏蔽软件,让手机电脑更清爽
当我们沉浸在智能手机带来的便捷与乐趣中时,内置AD如同不速之客,时常打断我们的体验。 尤其是手机上那些“摇一摇”跳转,稍有不慎就会跳转到其他应用,令人不胜其烦。同样,电脑上的内置AD也如影随形,影响了我…...
HackTheBox-Machines--Nibbles
Nibbles 测试过程 1 信息收集 NMAP 80 端口 网站出了打印出“Hello world!”外,无其他可利用信息,但是查看网页源代码时,发现存在一个 /nibbleblog 文件夹 检查了 http://10.129.140.63/nibbleblog/ ,发现了 /index.p…...
JavaScript 中的 ES|QL:利用 Apache Arrow 工具
作者:来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗?了解下一期 Elasticsearch Engineer 培训的时间吧! Elasticsearch 拥有众多新功能,助你为自己…...
spring:实例工厂方法获取bean
spring处理使用静态工厂方法获取bean实例,也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下: 定义实例工厂类(Java代码),定义实例工厂(xml),定义调用实例工厂ÿ…...
图表类系列各种样式PPT模版分享
图标图表系列PPT模版,柱状图PPT模版,线状图PPT模版,折线图PPT模版,饼状图PPT模版,雷达图PPT模版,树状图PPT模版 图表类系列各种样式PPT模版分享:图表系列PPT模板https://pan.quark.cn/s/20d40aa…...
C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。
1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj,再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...
MySQL账号权限管理指南:安全创建账户与精细授权技巧
在MySQL数据库管理中,合理创建用户账号并分配精确权限是保障数据安全的核心环节。直接使用root账号进行所有操作不仅危险且难以审计操作行为。今天我们来全面解析MySQL账号创建与权限分配的专业方法。 一、为何需要创建独立账号? 最小权限原则…...
初探Service服务发现机制
1.Service简介 Service是将运行在一组Pod上的应用程序发布为网络服务的抽象方法。 主要功能:服务发现和负载均衡。 Service类型的包括ClusterIP类型、NodePort类型、LoadBalancer类型、ExternalName类型 2.Endpoints简介 Endpoints是一种Kubernetes资源…...
R语言速释制剂QBD解决方案之三
本文是《Quality by Design for ANDAs: An Example for Immediate-Release Dosage Forms》第一个处方的R语言解决方案。 第一个处方研究评估原料药粒径分布、MCC/Lactose比例、崩解剂用量对制剂CQAs的影响。 第二处方研究用于理解颗粒外加硬脂酸镁和滑石粉对片剂质量和可生产…...
Go 语言并发编程基础:无缓冲与有缓冲通道
在上一章节中,我们了解了 Channel 的基本用法。本章将重点分析 Go 中通道的两种类型 —— 无缓冲通道与有缓冲通道,它们在并发编程中各具特点和应用场景。 一、通道的基本分类 类型定义形式特点无缓冲通道make(chan T)发送和接收都必须准备好࿰…...
处理vxe-table 表尾数据是单独一个接口,表格tableData数据更新后,需要点击两下,表尾才是正确的
修改bug思路: 分别把 tabledata 和 表尾相关数据 console.log() 发现 更新数据先后顺序不对 settimeout延迟查询表格接口 ——测试可行 升级↑:async await 等接口返回后再开始下一个接口查询 ________________________________________________________…...
MySQL体系架构解析(三):MySQL目录与启动配置全解析
MySQL中的目录和文件 bin目录 在 MySQL 的安装目录下有一个特别重要的 bin 目录,这个目录下存放着许多可执行文件。与其他系统的可执行文件类似,这些可执行文件都是与服务器和客户端程序相关的。 启动MySQL服务器程序 在 UNIX 系统中,用…...
