34

我想要做的只是提交字符串查询(相当于手动输入搜索栏)并保存第一个结果的 URL(如果有的话)。

我问了一个类似的问题(Python search scraping),它的答案在谷歌上很好用,我的问题是我在任何地方都找不到 Duckduckgo 的搜索 api 地址。你能帮我或建议这样做的另一种方式吗?

4

3 回答 3

67

tl;dr -- 屏幕抓取https://duckduckgo.com/html/?q={search_terms}

正如其他回答者所提到的,DuckDuckGo 的有限搜索API 的 URL 是

http://api.duckduckgo.com/?q=x&format=json

x是您正在寻找的搜索词。

但是,请注意这不是一个完整的搜索 API。正如DuckDuckGo 的 API 页面所提到的,

但是,此 API 不包括我们的所有链接。也就是说,它不是一个完整的搜索结果 API,也不是一种将 DuckDuckGo 结果导入您的应用程序的方法,而不仅仅是我们的即时答案。由于我们生成搜索结果的方式,很遗憾,我们无权完全联合我们的结果。出于同样的原因,我们不能允许在没有品牌的情况下构建我们的结果。请参阅我们的合作伙伴页面以获取有关指南的更多信息并与我们联系。

这是即时回答 API,而不是完整的结果 API。但是,其中有一些 Web 链接,例如官方网站。

因此,出于您声明的目的

只需提交字符串查询(相当于手动输入搜索栏)并保存第一个结果的 URL(如果有的话)。

api.duckduckgo.com 不会得到你想要的。

你最好的选择可能是只筛选非 JS 的 DuckDuckGo 网络版本:

https://duckduckgo.com/html/?q=x

寻找带有类似div.resultor的选择器的元素div.web-result

于 2016-08-16T00:31:02.020 回答
1

只需更改您想要搜索的任何内容。这将以 JSON 格式输出结果

https://api.duckduckgo.com/?q=<your search string>&format=json&pretty=1&no_html=1&skip_disambig=1

我想这就是你要的

于 2016-05-03T19:21:10.427 回答
0

www.api.duckduckgo.com/?q= Search&format=json&pretty=1

示例: http ://api.duckduckgo.com/?q=DuckDuckGo&format=json&pretty=1

响应是一个 JSON 对象,你可以找到第一个链接的地址:

response.Results[0].FirstURL

您可以通过将响应放入https://jsonformatter.curiousconcept.com/来找到它

希望它有所帮助:)

于 2016-05-03T19:21:27.393 回答