SE::DuckDuckGo - DuckDuckGo 搜索结果爬虫工具

爬虫工具概览
DuckDuckGo 搜索结果爬虫工具。借助 DuckDuckGo 爬虫工具,您可以获取海量的链接库,供后续使用。您可以直接使用在 DuckDuckGo 搜索栏中输入的查询格式,包括搜索指令(intitle, inurl, site 等)。详情请参阅官方页面 DuckDuckGo Search Syntax。
A-Parser 的功能允许您保存 DuckDuckGo 爬虫工具的抓取设置以便后续使用(预设),设置抓取计划等。您可以使用自动查询扩展、从文件替换子查询、遍历字母数字组合和列表,以获取尽可能多的结果。
得益于内置强大的模板引擎 Template Toolkit,您可以按所需的格式和结构保存结果,该引擎允许对结果应用额外的逻辑,并以各种格式输出数据,包括 JSON, SQL 和 CSV。
采集数据
- 搜索结果中的链接、锚文本和摘要 (
$serp.$i.link,$serp.$i.anchor,$serp.$i.snippet) - 广告结果中的链接、显示链接、锚文本、摘要、域名和广告位置 (
$ads.$i.domain,$ads.$i.link,$ads.$i.visiblelink,$ads.$i.anchor,$ads.$i.snippet,$ads.$i.position,$ads.$i.page) - 相关关键词列表 (
$related.$i.key)

功能
- 支持所有 DuckDuckGo 搜索运算符 (intitle:, inurl:, site: 等)。详情请参阅官方页面 DuckDuckGo Search Syntax
- 指定页数(1 到 10 页)
- 除自然搜索结果外,还采集广告块和相关关键词
- 可按选定地区(Region 选项)进行数据抓取,并指定搜索结果语言(Language 选项)
- 可开启安全搜索(Safe search 选项)并限制搜索结果的时间范围(Serp time 选项)
- 可分别为搜索页面和结果数据请求开启 HTTP/2
- 如果 DuckDuckGo 不通过 HTTP 返回搜索结果数据,则自动切换到内置浏览器
应用场景
- 收集链接库 - 用于 A-Poster, XRumer, AllSubmitter 等。
- 检查网站索引情况
- 查找网站反向链接(提及)
- 任何涉及以某种形式抓取 DuckDuckGo 的其他场景
查询
查询时需要指定搜索词,例如:
Football
测试
site:a-parser.com
爬虫工具 site:a-parser.com
test -site:tests.com
IoT filetype:pdf
查询替换
您可以使用 内置宏 来扩展查询,例如我们想获取一个非常大的论坛数据库,指定几个不同语言的基础查询:
forum
论坛
foro
论坛
在查询格式中指定从 a 到 zzzz 的字符遍历,此方法可以最大程度地轮换搜索结果并获得许多新的唯一结果:
$query {az:a:zzzz}
该宏将为每个原始搜索查询创建 475254 个额外查询,总计将产生 4 x 475254 = 1901016 个搜索查询,这个数字令人印象深刻,但对于 A-Parser 来说完全不是问题。在每分钟 2000 个查询的速度下,此类任务仅需 16 小时即可处理完毕。
使用运算符
您可以在查询格式中使用搜索运算符,这样它将自动添加到列表中的每个查询:
site:$query
结果输出示例
得益于内置的模板引擎 Template Toolkit,A-Parser 支持灵活的结果格式化,允许以任意形式以及结构化形式(如 CSV 或 JSON)输出结果。
导出链接列表
链接 + 锚点 + 摘要(带位置输出)
将链接、锚点和摘要输出到 CSV 表格
保存相关关键词
输出广告块
以 SQL 格式保存
将结果转储为 JSON
结果处理
A-Parser 允许在数据抓取过程中直接处理结果,本节列出了 DuckDuckGo 爬虫工具最常用的案例。
链接去重
按域名进行链接去重
提取域名
去除锚点和摘要中的标签
按包含内容过滤链接
可能的设置
| 参数名称 | 默认值 | 描述 |
|---|---|---|
| Pages count | 5 | 要抓取的页面数量(1 到 10),如果搜索结果没有下一页,数据抓取可能会提前结束 |
| Region | US (English) | 选择搜索结果区域 |
| Language | English (United States) | 选择搜索结果语言 |
| Safe search | Moderate | 安全搜索:Strict、Moderate 或 Off |
| Serp time | Any time | 搜索时间范围:过去一天、一周、一月、一年或全部时间 |
| Use HTTP/2 | ☐ | 确定在请求搜索页面时是否使用 HTTP/2 代替 HTTP/1.1 |
| Use HTTP/2 for links | ☐ | 请求搜索结果数据时同上 |
| User agent | Chrome 150, Windows | 请求页面时的 User-Agent 请求头,也用于浏览器。如果留空,将使用当前版本 Firefox 的 User-Agent |
| Get first link with browser pages count | 5 | 可同时使用的内置浏览器页面数量。浏览器仅用于获取搜索页面:如果 DuckDuckGo 未通过 HTTP 返回搜索结果数据,则下一次尝试将通过浏览器执行 |