duckduckgo_search
是一个基于 DuckDuckGo 搜索引擎的 Python 包,可以用于执行文本、新闻、图片和视频搜索。以下是 duckduckgo_search
的用法和 DDGS
类的详细说明:
安装:
pip install -U duckduckgo_search
DDGS 类的用法
DDGS
类提供了多种搜索方法,包括文本搜索、新闻搜索、图片搜索和视频搜索。
1. 文本搜索(text()
方法)
from duckduckgo_search import DDGS
results = DDGS().text(
keywords="python programming",
region="wt-wt", # 地区代码,如 "us-en"
safesearch="moderate", # 安全搜索级别:on, moderate, off
timelimit=None, # 时间限制:d(天)、w(周)、m(月)、y(年)
backend="auto", # 后端选择:auto, html, lite
max_results=5 # 最大结果数量
)
print(results)
2. 新闻搜索(news()
方法)
results = DDGS().news(
keywords="python programming",
region="wt-wt",
safesearch="moderate",
timelimit="d", # 可选:d(天)、w(周)、m(月)
max_results=10
)
print(results)
3. 图片搜索(images()
方法)
results = DDGS().images(
keywords="python programming",
region="wt-wt",
safesearch="moderate",
timelimit=None,
max_results=10
)
print(results)
4. 视频搜索(videos()
方法)
results = DDGS().videos(
keywords="python programming",
region="wt-wt",
safesearch="moderate",
timelimit=None,
max_results=10
)
print(results)
搜索结果格式
搜索结果通常是一个包含多个字典的列表,每个字典包含以下字段:
-
title
: 标题 -
href
: 链接 -
body
: 描述内容 -
image
: 图片链接(仅图片搜索) -
date
: 发布日期(仅新闻搜索)
注意事项
-
隐私和使用限制:
duckduckgo_search
是基于 DuckDuckGo 的非官方接口,完全免费且无需 API 密钥。但请注意合理使用,避免滥用。 -
搜索结果质量:虽然 DuckDuckGo 以隐私保护为特色,但其搜索结果的质量可能不如 Google 精准。
DDGS().text()用法
DDGS().text()
方法中,keywords
参数用于指定搜索关键词。如果你需要传递多个关键词,可以通过以下几种方式实现:
1. 使用空格分隔关键词
最简单的方式是将多个关键词用空格分隔,形成一个字符串。DuckDuckGo 会将这些关键词组合起来进行搜索。
from duckduckgo_search import DDGS
results = DDGS().text(
keywords="python programming tutorial",
max_results=5
)
print(results)
2. 使用布尔运算符
DuckDuckGo 支持布尔运算符(如 AND
、OR
、NOT
)来组合关键词,从而更精确地控制搜索结果。
示例 1:AND
操作
results = DDGS().text(
keywords="python AND programming",
max_results=5
)
print(results)
示例 2:OR
操作
results = DDGS().text(
keywords="python OR java",
max_results=5
)
print(results)
示例 3:NOT
操作
results = DDGS().text(
keywords="python NOT java",
max_results=5
)
print(results)
3. 使用引号精确匹配
如果你希望搜索结果中包含某个完整的短语,可以将短语用引号括起来。这种方式会强制搜索结果中包含该短语。
示例:
results = DDGS().text(
keywords='"python programming"',
max_results=5
)
print(results)
4. 使用多个关键词参数(Python 列表)
如果你有多个关键词,但希望它们以不同的方式组合,可以先将它们存储在一个列表中,然后用空格或布尔运算符连接。
示例:
keywords = ["python", "programming", "tutorial"]
query = " ".join(keywords) # 将关键词用空格连接
results = DDGS().text(
keywords=query,
max_results=5
)
print(results)
5. 使用 site:
限定符
如果你想限制搜索结果来自特定的网站,可以使用 site:
限定符。
示例:
results = DDGS().text(
keywords="python programming site:stackoverflow.com",
max_results=5
)
print(results)
总结
在 DDGS().text()
方法中,keywords
参数支持多种组合方式:
-
使用空格分隔关键词,适合简单搜索。
-
使用布尔运算符(
AND
、OR
、NOT
)进行复杂搜索。 -
使用引号精确匹配短语。
-
使用限定符(如
site:
)进一步限制搜索范围。