【发布时间】:2016-05-03 19:08:55
【问题描述】:
我想要做的只是提交字符串查询(相当于手动输入搜索栏)并保存第一个结果的 URL(如果有的话)。
我已经问过一个类似的问题 (Python search scraping),它的答案适用于谷歌我的问题是我无法在任何地方找到 Duckduckgo 的搜索 api 地址。你能帮我或建议另一种方法吗?
【问题讨论】:
标签: api duckduckgo-api
我想要做的只是提交字符串查询(相当于手动输入搜索栏)并保存第一个结果的 URL(如果有的话)。
我已经问过一个类似的问题 (Python search scraping),它的答案适用于谷歌我的问题是我无法在任何地方找到 Duckduckgo 的搜索 api 地址。你能帮我或建议另一种方法吗?
【问题讨论】:
标签: api duckduckgo-api
tl;dr -- 屏幕抓取 https://duckduckgo.com/html/?q={search_terms}
正如其他回答者所提到的,DuckDuckGo 的 limited search API 的 URL 是
http://api.duckduckgo.com/?q=x&format=json
x 是您要查找的搜索词。
然而,请注意这不是一个完整的搜索 API。正如DuckDuckGo's API page 提到的,
但是,此 API 不包含我们的所有链接。也就是说,它不是一个完整的搜索结果 API,也不是一种将 DuckDuckGo 结果输入您的应用程序的方法,而不仅仅是我们的即时答案。由于we generate our search results 的方式,很遗憾,我们无权完全联合我们的结果。出于同样的原因,我们不能允许在没有品牌的情况下构建我们的结果。请参阅our partnerships page 了解有关指南的更多信息并与我们联系。
这是即时回答 API,而不是完整的结果 API。但是,其中有一些 Web 链接,例如官方网站。
所以为了你所说的目的
只需提交字符串查询(相当于在搜索栏中手动输入)并保存第一个结果的 URL(如果有的话)。
api.duckduckgo.com 不会得到你想要的。
您最好的选择可能是只截取非 JS 网页版 DuckDuckGo:
https://duckduckgo.com/html/?q=x
寻找带有div.result 或div.web-result 之类的选择器的元素。
【讨论】:
format=xml。它可能会在没有明确要求的情况下给你一个 JSON 响应,但如果是这样,它是一个未记录的功能,可能会在没有通知的情况下更改。
只需更改您想要搜索的任何内容。这将以 JSON 格式输出结果
https://api.duckduckgo.com/?q=<your search string>&format=json&pretty=1&no_html=1&skip_disambig=1
我想这就是你想要的
【讨论】:
www.api.duckduckgo.com/?q=
Search&format=json&pretty=1
示例: http://api.duckduckgo.com/?q=DuckDuckGo&format=json&pretty=1
响应是一个JSON Object,可以找到第一个链接的地址:
response.Results[0].FirstURL
您可以通过将回复放入 https://jsonformatter.curiousconcept.com/ 来找出答案
希望它有所帮助:)
【讨论】: