Бесплатный веб-, новостной и поиск изображений DuckDuckGo с помощью ddgs

Выполняйте бесплатные веб-, новостные и поисковые запросы изображений через DuckDuckGo с использованием ddgs без необходимости в ключе API.

Hermes Средний Скопировали: 0
1 ресурс

Что понадобится

  • Ключ 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 между ветками двух агентов в качестве беспристрастной третьей стороны: нейтральный арбитр, который принимает обе версии изменений и указанные намерения, после чего формирует итоговый результат слияния, не перезаписывая ни одну из сторон.

Hermes Средний
Автоматизация Разработка

Автономное управление проектами с помощью подагентов

Координация проектов автономно: главный агент делегирует работу подагентам-менеджерам проектов, которые отслеживают задачи в общем файле STATE.yaml, обновляют его по мере выполнения, параллельно берутся за неблокируемые задачи и сохраняют всё состояние задач в файлах с контролем версий.

OpenClaw Средний
Продуктивность

Локально размещённый ассистент рабочего пространства Nextcloud

Скилл продуктивности Nextcloud позволяет Hermes работать с файлами, заметками, календарями, задачами и контактами в вашем собственном экземпляре Nextcloud через WebDAV, API заметок, CalDAV и CardDAV.

Hermes Средний

>Ещё на этом уровне: Средний