← 返回
内容创作 中文

ddgs (DuckDuckGo Search)

Perform privacy-focused web searches via DDGS metasearch for webpages, news, images, videos, or books with no tracking and no API key required.
通过DDGS元搜索引擎进行注重隐私的网络搜索,支持网页、新闻、图片、视频或书籍,无追踪且无需API密钥。
idkwhodatis
内容创作 clawhub v1.0.0 1 版本 100000 Key: 无需
★ 0
Stars
📥 1,184
下载
💾 44
安装
1
版本
#latest

概述

DDGS Web Search Skill

This skill implements web search functionality via the DDGS (Dux Distributed Global Search) engine, aggregating results from diverse search services to fetch real-time information.

Features

🔍 Privacy-friendly metasearch

📰 News search support

🖼️ Image search support

📹 Video search support

📚 Books search support

🌐 Free to use, no API Key required

🔒 Privacy protection, no user tracking

⚡ MCP (Model Context Protocol) and API server support

Installation

# Install via uv (Recommended)
uv pip install ddgs

# Or install via pip
pip install ddgs

Quick Start

1. Text Search

The most commonly used search method, returning webpage results:

python -c "
from ddgs import DDGS

query = 'your search query'

results = DDGS().text(
    query,
    region='wt-wt',        # Region: cn-zh (China), us-en (US), wt-wt (Global)
    safesearch='moderate', # Safe search: on, moderate, off
    timelimit='m',         # Time range: d (day), w (week), m (month), y (year), None (unlimited)
    max_results=10,        # Maximum number of results
    backend='auto'         # Backends: auto, duckduckgo, brave, bing, etc.
)

for i, r in enumerate(results, 1):
    print(f\"{i}. {r.get('title')}\")
    print(f\"   URL: {r.get('href')}\")
    print(f\"   Snippet: {str(r.get('body'))[:100]}...\n\")
"

2. News Search

Search for the latest news:

python -c "
from ddgs import DDGS

results = DDGS().news(
    'AI technology',
    region='wt-wt',
    safesearch='moderate',
    timelimit='d',       # d=past 24 hours, w=past week, m=past month
    max_results=10
)

for r in results:
    print(f\"📰 {r.get('title')}\")
    print(f\"   Source: {r.get('source')}\")
    print(f\"   Date: {r.get('date')}\")
    print(f\"   Link: {r.get('url')}\n\")
"

3. Image Search

Search for image resources:

python -c "
from ddgs import DDGS

results = DDGS().images(
    'cute cats',
    region='wt-wt',
    safesearch='moderate',
    size='Medium',       # Small, Medium, Large, Wallpaper
    type_image='photo',  # photo, clipart, gif, transparent, line
    layout='Square',     # Square, Tall, Wide
    max_results=10
)

for r in results:
    print(f\"🖼️ {r.get('title')}\")
    print(f\"   Image: {r.get('image')}\")
    print(f\"   Thumbnail: {r.get('thumbnail')}\")
    print(f\"   Source: {r.get('source')}\n\")
"

4. Video Search

Search for video content:

python -c "
from ddgs import DDGS

results = DDGS().videos(
    'Python programming',
    region='wt-wt',
    safesearch='moderate',
    timelimit='w',       # d, w, m
    resolution='high',   # high, standard
    duration='medium',   # short, medium, long
    max_results=10
)

for r in results:
    print(f\"📹 {r.get('title')}\")
    print(f\"   Duration: {r.get('duration', 'N/A')}\")
    print(f\"   Publisher: {r.get('publisher')}\")
    print(f\"   Link: {r.get('content')}\n\")
"

5. Books Search

Search for books:

python -c "
from ddgs import DDGS

results = DDGS().books(
    'sea wolf jack london',
    max_results=5
)

for r in results:
    print(f\"📚 {r.get('title')}\")
    print(f\"   Author: {r.get('author')}\")
    print(f\"   Publisher: {r.get('publisher')}\")
    print(f\"   Link: {r.get('link')}\n\")
"

Practical Scripts

Reusable Search Function

python -c "
from ddgs import DDGS

def web_search(query, search_type='text', max_results=5, region='wt-wt', timelimit=None):
    '''
    Execute DDGS search
    
    Args:
        query: Search keyword
        search_type: text, news, images, videos, books
        max_results: Maximum results
        region: Region (cn-zh, us-en, wt-wt)
        timelimit: Time limit (d, w, m, y)
    '''
    ddgs = DDGS()
    if search_type == 'text':
        return list(ddgs.text(query, region=region, timelimit=timelimit, max_results=max_results))
    elif search_type == 'news':
        return list(ddgs.news(query, region=region, timelimit=timelimit, max_results=max_results))
    elif search_type == 'images':
        return list(ddgs.images(query, region=region, max_results=max_results))
    elif search_type == 'videos':
        return list(ddgs.videos(query, region=region, timelimit=timelimit, max_results=max_results))
    elif search_type == 'books':
        return list(ddgs.books(query, max_results=max_results))
    return []

results = web_search('Python 3.12 new features', max_results=5)
print(f'📊 Found {len(results)} results')
"

Parameters Explained

Region Codes (region)

| Code | Region |

|---|---|

| cn-zh | China |

| us-en | United States |

| uk-en | United Kingdom |

| jp-jp | Japan |

| kr-kr | South Korea |

| wt-wt | Global (No region limit) |

Time Limit (timelimit)

| Value | Meaning |

|---|---|

| d | Past 24 hours |

| w | Past week |

| m | Past month |

| y | Past year |

| None | No limit |

Safe Search (safesearch)

| Value | Meaning |

|---|---|

| on | Strict filtering |

| moderate | Moderate filtering (Default) |

| off | Filtering disabled |

Error Handling & Proxies

Basic Error Handling

python -c "
from ddgs import DDGS
from ddgs.exceptions import DDGSException

try:
    results = DDGS().text('test query', max_results=5)
    print(f'✅ Search successful, found {len(results)} results')
except DDGSException as e:
    print(f'❌ Search error: {e}')
except Exception as e:
    print(f'❌ Unknown error: {e}')
"

Using Proxies

python -c "
from ddgs import DDGS

# Set proxy (supports http/https/socks5)
proxy = 'http://127.0.0.1:7890'  

results = DDGS(proxy=proxy).text('test query', max_results=5)
print(f'Successfully searched via proxy, found {len(results)} results')
"

FAQ

Installation Failed?

pip install --upgrade pip
pip install ddgs

No Results Found?

  • Check your network connection.
  • Try using a proxy.
  • Simplify your search query.
  • Verify that your region settings are correct.

Rate Limited?

  • Add a delay between multiple requests (e.g., import time; time.sleep(1)).
  • Reduce the max_results per request.

Integration & Notes

Integration Example

# 1. Search with DDGS
python -c "
from ddgs import DDGS
results = DDGS().text('Python async tutorial', max_results=1)
if results:
    print(f\"URL: {results[0].get('href')}\")
"

# 2. Open result with your browser-use tool
browser-use open <url_from_search>

⚠️ Best Practices:

  • Respect Rate Limits: Avoid sending a massive volume of requests in a short period.
  • Optimize Results: Do not request more results than necessary in a single query.
  • Add Delays: Use time.sleep() when executing batch searches.
  • Handle Exceptions: Always wrap your API calls in try/except blocks.
  • Copyright Awareness: Search results are for reference only; respect the copyright of the indexed content.

版本历史

共 1 个版本

  • v1.0.0 当前
    2026-03-29 08:59 安全 安全

安全检测

腾讯云安全 (Keen)

安全,无风险
查看报告

腾讯云安全 (Sanbu)

安全,无风险
查看报告

🔗 相关推荐

content-creation

AdMapix

fly0pants
广告情报与应用数据分析助手,支持搜索广告素材、分析应用排名、下载量、收入及市场洞察,用于广告素材和竞品分析。
★ 295 📥 136,494
content-creation

Baidu Wenku AIPPT

ide-rea
使用百度文库 AI 智能生成 PPT,自动根据内容选择模板。
★ 66 📥 46,208
content-creation

YouTube

byungkyu
使用托管OAuth集成YouTube Data API,支持搜索视频、管理播放列表、获取频道数据及评论互动,适用于用户需要时使用此技能。
★ 142 📥 41,077