DuckDuckGo 搜索爬取器

](https://www.bright.cn/products/serp-api/duckduckgo-search)

本仓库提供两种从 DuckDuckGo 搜索结果页(SERPs)提取数据的方案:

  • 免费 DuckDuckGo 爬虫:用于小规模抓取 DuckDuckGo 搜索结果的工具
  • 企业级 DuckDuckGo SERP API:适用于高并发、实时数据提取的可扩展生产级方案(隶属于Bright Data 的 SERP Scraper API

目录

免费 DuckDuckGo SERP 爬虫

该免费爬虫提供一种简单方式用于小规模收集搜索结果数据。若你仅需有限数据且不想管理代理或处理高并发,这是理想选择。

环境准备

  • Python 3.9+ -- 下载 Python
  • 依赖包:
  • selenium(浏览器自动化)
  • webdriver-manager(浏览器驱动管理)
  • beautifulsoup4(HTML 解析)

安装命令:

bash 复制代码
pip install selenium webdriver-manager beautifulsoup4

Web 抓取新手?

可先阅读我们的Python 入门抓取指南。随后参阅在抓取中使用 Selenium,若已熟悉 Selenium,可继续阅读高级的 SeleniumBase 指南

快速开始指南

  1. 打开 duckduckgo-serp-scraper.py
  2. 按需自定义搜索词:
python 复制代码
SEARCH_TERMS = [
ergonomic office chair,
coffee maker,
]
  1. 运行脚本开始抓取。

示例输出

如下为爬虫输出预览:

限制

尽管免费爬虫适合基础任务,但需注意以下限制:

  • 频繁使用容易导致 IP 被封
  • 请求量能力有限
  • 易频繁触发 CAPTCHA
  • 不适合生产环境

如需可扩展且稳定的方案,请参考下文的专用 API 👇

DuckDuckGo SERP API

DuckDuckGo SERP API 是 Bright Data 全面 SERP Scraper API 套件的一部分。它利用我们行业领先的 DuckDuckGo 代理基础设施,仅用一次 API 调用即可获取实时 DuckDuckGo 搜索结果。

主要优势

  • 全球精确度:可按任意地区定制结果
  • 成功即付费:仅为成功请求付费
  • 实时数据:秒级获取最新结果
  • 无限扩展:轻松应对高并发抓取
  • 成本高效:无需昂贵自建基础设施
  • 稳定可靠:先进防封技术保障一致结果
  • 7x24 专家支持:随时获得协助

📌 先试后买:使用我们的 SERP API 在线演示

开始使用

  1. 创建 Bright Data 账户(新用户可获 $5 额度)
  2. 生成你的API 密钥
  3. 按照配置指南集成 SERP API

接入方式

你可以通过以下两种方式将 DuckDuckGo SERP API 集成到你的工作流中:

直接 API 访问

直接请求 Bright Data 的 API 端点。

cURL 示例
bash 复制代码
curl https://api.www.bright.cn/request \
-H "Content-Type: application/json" \
-H "Authorization: Bearer API_TOKEN" \
-d '{
zone: "ZONE_NAME",
url: "https://duckduckgo.com/?q=budget+laptops+under+500+gbp&kl=uk-en&kad=en-gb&df=w",
format: "raw"
}'
Python 示例
python 复制代码
import requests

url = "https://api.www.bright.cn/request"

headers = {
Content-Type: "application/json",
Authorization: "Bearer API_TOKEN"
}

payload = {
zone: "ZONE_NAME",
url: "https://duckduckgo.com/?q=budget+laptops+under+500+gbp&kl=uk-en&kad=en-gb&df=w",
format: "raw",
}

response = requests.post(url, headers=headers, json=payload)

with open("duckduckgo-scraper-api-result.html", "w", encoding="utf-8") as file:
file.write(response.text)

print("Response saved!")

原生代理访问

通过代理路由直接访问搜索结果。

cURL 示例
bash 复制代码
curl -i \
--proxy brd.superproxy.io:33335 \
--proxy-user brd-customer-<CUSTOMER_ID>-zone-<ZONE_NAME>:<ZONE_PASSWORD> \
-k \
https://duckduckgo.com/?q=budget+laptops+under+500+gbp&kl=uk-en&kad=en-gb&df=w
Python 示例
python 复制代码
import requests
import urllib3

urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)

host = "brd.superproxy.io"
port = 33335
username = "brd-customer-<CUSTOMER_ID>-zone-<ZONE_NAME>"
password = "<ZONE_PASSWORD>"
proxy_url = f"http://{username}:{password}@{host}:{port}"

proxies = {
http: proxy_url,
https: proxy_url
}

url = "https://duckduckgo.com/?q=budget+laptops+under+500+gbp&kl=uk-en&kad=en-gb&df=w"
response = requests.get(url, proxies=proxies, verify=False)

with open("duckduckgo-scraper-api-result.html", "w", encoding="utf-8") as file:
file.write(response.text)

print("Response saved!")

注意:在生产环境中使用原生代理方式时,建议安装 Bright Data 的 SSL 证书。请参考我们的SSL 证书指南

👉 想查看完整 HTML 输出预览,请参见完整结果

DuckDuckGo 搜索查询参数

通过多种查询参数精准调优你的搜索结果。

本地化

国家与语言(kl

指定搜索结果的国家与语言。

示例:

bash 复制代码
curl --proxy brd.superproxy.io:33335 \
--proxy-user brd-customer-<id>-zone-<zone>:<password> \
https://duckduckgo.com/?q=best+coffee+brands&kl=it-it

返回意大利地区的定制化结果。

界面语言(kad

控制 DuckDuckGo 的界面语言。

示例:

bash 复制代码
https://duckduckgo.com/?q=photo+editing+tools&kad=de

搜索内容保持英文,但界面以德语显示。

安全搜索设置(kp

调整成人内容过滤。

取值
  • 1 -- 严格
  • -1 -- 中等
  • -2 -- 关闭

示例:

bash 复制代码
https://duckduckgo.com/?q=swimsuit&kp=1

仅返回"家庭安全"的结果。

时间范围筛选(df

限定搜索结果的时间范围。

取值
  • d -- 最近一天
  • w -- 最近一周
  • m -- 最近一月
  • y -- 最近一年
  • 自定义范围:如 2025-03-01..2025-03-10

示例:

bash 复制代码
https://duckduckgo.com/?q=iphone+15+review&df=w

仅显示最近一周的评测。

设备定向(brd_mobile

模拟来自不同设备类型的搜索。

选项
  • 0 -- 桌面端(默认)
  • 1 -- 随机移动设备
  • iosiphone -- iPhone
  • ipadios_tablet -- iPad
  • android -- 安卓手机
  • android_tablet -- 安卓平板

示例:

bash 复制代码
https://duckduckgo.com/?q=top+travel+apps&brd_mobile=ios

模拟 iPhone 用户,你可能会看到应用商店链接、移动端内容或 AMP 页面。

浏览器仿真(brd_browser

为请求指定浏览器的 User-Agent。

选项
  • 默认(随机浏览器)
  • chrome -- Google Chrome
  • safari -- Safari
  • firefox -- Mozilla Firefox(不兼容 brd_mobile=1

示例:

bash 复制代码
https://duckduckgo.com/?q=best+vpn+services&brd_browser=safari

模拟 Safari 浏览器,以便了解该平台上的展示与排名差异。

实用示例

你希望在英国市场,面向移动端用户,监测竞争对手"500 英镑以下的预算笔记本"相关页面的定价。

目标:

  • 模拟英国移动端用户
  • 获取本地化英文结果(英国零售商,英镑货币)
  • 使用移动端 Chrome UA(捕获 AMP 等移动特化结果)
  • 聚焦近期清单类文章或优惠

将需求组合成一个 cURL 命令:

bash 复制代码
curl --proxy brd.superproxy.io:33335 \
--proxy-user brd-customer-<CUSTOMER_ID>-zone-<ZONE_NAME>:<ZONE_PASSWORD> \
"https://duckduckgo.com/?\
q=budget+laptops+under+500+gbp&\
kl=uk-en&\
kad=en-gb&\
df=w&\
brd_mobile=android&\
brd_browser=chrome"

🎯 这将获取"移动优先、已本地化、且为近期"的内容。

支持与资源

相关推荐
去码头整点薯条ing8 小时前
某当网登录滑块【协议+OCR】
爬虫·python·ocr
上海云盾-小余8 小时前
中小站点防护避坑:低价高防服务存在的各类安全短板剖析
网络·爬虫·安全·ddos
阿标在干嘛13 小时前
从单机到分布式:政策快报爬虫系统的三次重构
分布式·爬虫·重构
蜘蛛人14 小时前
SERP API 4 种缓存方案对比:内存 / Redis / Memcached / 多层
serp
2401_8734794014 小时前
爬虫IP怎么防?IP离线库四层识别+日志留存,反爬留证两不误
爬虫·网络协议·tcp/ip·ip
胡耀超2 天前
从一次批量爬取到生产同步:问题变了,建设边界也要跟着变
爬虫·python·系统架构·数据治理·数据同步·接口设计·爬虫工程
TlSfoward2 天前
TLSFOWARD TLS指纹
开发语言·数据库·爬虫·搜索引擎·https·php
深蓝电商API2 天前
浏览器一次请求到底经历了什么?
爬虫
oh,huoyuyan3 天前
火车采集器同时运行超多任务运行优化方案
爬虫·火车采集器