Бесплатный веб-, новостной и поиск изображений DuckDuckGo с помощью ddgs
Выполняйте бесплатные веб-, новостные и поисковые запросы изображений через DuckDuckGo с использованием ddgs без необходимости в ключе API.
Что понадобится
- Ключ API не требуется, а сам веб-поиск является бесплатным.
Как применить
Предпочтите этот способ, когда web_search недоступен или не подходит, например, если не установлен FIRECRAWL_API_KEY; он также может служить отдельным вариантом поиска, если нужны именно результаты DuckDuckGo.
Текстовый поиск лучше всего подходит для общих исследований, работы с компаниями и документацией.
Новостной поиск идеально подходит для текущих событий, свежих новостей и последних обновлений.
Поиск изображений наилучшим образом подходит для визуальных справок, изображений товаров и диаграмм.
Видеопоиск лучше всего подходит для учебных материалов, демонстраций и объяснений.
Выбирайте метод в зависимости от задачи: text() для общих исследований и работы с компаниями (заголовок, ссылка, текст), news() для текущих событий и обновлений (дата, заголовок, источник, текст, URL), images() для визуальных материалов и диаграмм (заголовок, изображение, миниатюра, URL) и videos() для учебных материалов и демонстраций (заголовок, содержимое, длительность, провайдер).
Затем извлеките лучший URL с помощью web_extract или другого инструмента для получения контента.
DuckDuckGo может ограничивать скорость после множества быстрых запросов; при необходимости добавьте небольшую задержку между поисковыми запросами.
Результаты поиска содержат лишь фрагменты текста, а не полное содержимое страницы — для получения полной статьи или страницы используйте web_extract, инструменты браузера или curl.
DuckDuckGo может блокировать запросы с некоторых облачных IP-адресов; если поиск возвращает пустые результаты, попробуйте другие ключевые слова или подождите несколько секунд.
Возвращаемые поля могут различаться в зависимости от результата или версии ddgs; используйте .get() для необязательных полей, чтобы избежать KeyError.
Успешная установка ddgs в терминале ещё не означает, что среда выполнения Python сможет импортировать его.
Если появляется ошибка CLI, скорее всего, пакет не установлен в среде оболочки — установите ddgs или воспользуйтесь встроенными веб- или браузерными инструментами; если возникает ошибка импорта в Python, значит в этой среде отсутствует пакет, поэтому не используйте Python DDGS до его подготовки; если поиск ничего не возвращает, подождите несколько секунд, повторите запрос или скорректируйте запрос; если CLI работает, но импорт в среде выполнения завершается ошибкой, значит терминал и среда выполнения — разные среды — продолжайте использовать CLI или подготовьте отдельно среду выполнения Python.
Проверьте, присутствует ли CLI ddgs в среде оболочки.
Перед выбором подхода убедитесь, что именно доступно.
# Check CLI availability
command -v ddgs >/dev/null && echo "DDGS_CLI=installed" || echo "DDGS_CLI=missing"
Если CLI ddgs установлен, предпочтите использование terminal вместе с ddgs.
Если CLI ddgs отсутствует, не предполагайте, что среда выполнения сможет импортировать ddgs.
Если пользователю нужен именно DuckDuckGo, сначала установите ddgs в соответствующей среде.
В противном случае используйте встроенные веб- или браузерные инструменты.
Успешная установка в оболочке не гарантирует, что среда выполнения сможет импортировать ddgs.
Никогда не предполагайте, что сторонние пакеты Python уже установлены в среде выполнения.
После установки проверьте работоспособность CLI перед тем, как полагаться на него.
Устанавливайте ddgs только тогда, когда поиск через DuckDuckGo действительно необходим, и среда выполнения его ещё не предоставляет.
# Python package + CLI entrypoint
pip install ddgs
# Verify CLI
ddgs --help
Если рабочий процесс зависит от импортов Python, убедитесь, что тот же самый интерпретатор может импортировать ddgs перед использованием from ddgs import DDGS.
Поиск через CLI охватывает запросы к тексту, новостям, изображениям и видео, причем доступны дополнительные параметры: регион, временные ограничения, режим безопасного поиска и формат вывода; обязательным является параметр запроса.
Используйте команду ddgs через terminal, если она доступна; это предпочтительный способ, так как он исключает предположение о том, что в среде выполнения установлен пакет Python ddgs.
# Text search
ddgs text -q "python async programming" -m 5
# News search
ddgs news -q "artificial intelligence" -m 5
# Image search
ddgs images -q "landscape photography" -m 10
# Video search
ddgs videos -q "python tutorial" -m 5
# With region filter
ddgs text -q "best restaurants" -m 5 -r us-en
# Recent results only (d=day, w=week, m=month, y=year)
ddgs text -q "latest AI news" -m 5 -t w
# JSON output for parsing
ddgs text -q "fastapi tutorial" -m 5 -o json
Используйте класс DDGS в данной среде выполнения или в другой среде Python только после проверки наличия в ней ddgs; не стоит полагаться на то, что в среде выполнения по умолчанию присутствуют сторонние пакеты.
Фраза вроде «используйте среду выполнения с ddgs после установки или проверки наличия пакета при необходимости» является корректной.
Не стоит исходить из предположения, что в среде выполнения уже присутствует ddgs.
Не стоит исходить из предположения, что поиск через DuckDuckGo работает по умолчанию в среде выполнения.
Важно: параметр max_results всегда должен передаваться как именованный аргумент — его использование в позиционном виде вызывает ошибку во всех методах.
Текстовый поиск лучше всего подходит для общих исследований, работы с компаниями и документацией.
from ddgs import DDGS
with DDGS() as ddgs:
for r in ddgs.text("python async programming", max_results=5):
print(r["title"])
print(r["href"])
print(r.get("body", "")[:200])
print()
Поиск новостей наиболее эффективен для актуальных событий, свежих новостей и последних обновлений.
from ddgs import DDGS
with DDGS() as ddgs:
for r in ddgs.news("AI regulation 2026", max_results=5):
print(r["date"], "-", r["title"])
print(r.get("source", ""), "|", r["url"])
print(r.get("body", "")[:200])
print()
Поиск изображений идеально подходит для визуальных справок, изображений товаров и диаграмм.
from ddgs import DDGS
with DDGS() as ddgs:
for r in ddgs.images("semiconductor chip", max_results=5):
print(r["title"])
print(r["image"])
print(r.get("thumbnail", ""))
print(r.get("source", ""))
print()
Поиск видео лучше всего подходит для обучающих материалов, демонстраций и пояснений.
from ddgs import DDGS
with DDGS() as ddgs:
for r in ddgs.videos("FastAPI tutorial", max_results=5):
print(r["title"])
print(r.get("content", ""))
print(r.get("duration", ""))
print(r.get("provider", ""))
print(r.get("published", ""))
print()
Данный рабочий процесс состоит из поиска, за которым следует извлечение данных.
DuckDuckGo возвращает заголовки, URL-адреса и фрагменты текста — но не полное содержимое страниц. Чтобы получить полное содержимое страницы, сначала выполните поиск, а затем извлеките наиболее релевантный URL с помощью web_extract, инструментов браузера или curl.
ddgs text -q "fastapi deployment guide" -m 3 -o json
Пример кода на Python будет работать только после проверки наличия ddgs в данной среде выполнения.
from ddgs import DDGS
with DDGS() as ddgs:
results = list(ddgs.text("fastapi deployment guide", max_results=3))
for r in results:
print(r["title"], "->", r["href"])
Параметр max_results допускает только именованные аргументы: его использование в позиционном виде вызывает ошибку, поэтому применяйте ddgs.text("query", max_results=5).
Не стоит предполагать, что команда CLI существует — проверьте её наличие с помощью command -v ddgs перед использованием.
Не стоит полагаться на то, что среда выполнения может импортировать ddgs: попытка использовать from ddgs import DDGS может завершиться ошибкой ModuleNotFoundError, если среда выполнения не была специально подготовлена.
Этот пакет называется ddgs (ранее — duckduckgo-search); установите его командой pip install ddgs.
Не путайте параметр запроса с параметром максимального количества результатов: первый задаёт сам запрос, а второй — количество найденных результатов.
Если ddgs ничего не возвращает, возможно, был превышен лимит запросов; подождите несколько секунд и повторите попытку.
Источник: nousresearch/hermes-agent и участники проекта. Лицензия: MIT.
Copyright (c) 2025 Nous Research
Перевод и редакционная адаптация: ClawCases.
>Ресурсы
>Похожие юзкейсы
Арбитр разрешения конфликтов слияния агентов
Разрешает конфликт слияния Git между ветками двух агентов в качестве беспристрастной третьей стороны: нейтральный арбитр, который принимает обе версии изменений и указанные намерения, после чего формирует итоговый результат слияния, не перезаписывая ни одну из сторон.
Автономное управление проектами с помощью подагентов
Координация проектов автономно: главный агент делегирует работу подагентам-менеджерам проектов, которые отслеживают задачи в общем файле STATE.yaml, обновляют его по мере выполнения, параллельно берутся за неблокируемые задачи и сохраняют всё состояние задач в файлах с контролем версий.
Локально размещённый ассистент рабочего пространства Nextcloud
Скилл продуктивности Nextcloud позволяет Hermes работать с файлами, заметками, календарями, задачами и контактами в вашем собственном экземпляре Nextcloud через WebDAV, API заметок, CalDAV и CardDAV.