这是我的Duck Duck Go搜索脚本。
import duckduckgo
r = duckduckgo.query('DuckDuckGo')
print r.results[0].url
它返回;列表索引超出范围。如果我打印r.results,我得到;
[<duckduckgo.Result object at 0x0000000002E98F60>]
但是,如果我搜索“DuckDuckGo”以外的任何内容。它返回一个空值
[]
我完全按照他们在示例代码中所做的操作。 https://github.com/mikejs/python-duckduckgo
答案 0 :(得分:4)
那是documented behaviour。有不同的结果属性。
您的第一个查询会返回结果列表。
r = duckduckgo.query('DuckDuckGo')
if r.type == 'answer':
print r.results # [<duckduckgo.Result object>]
您的其他搜索返回消歧,结果位于r.related
而不是r.results
r = duckduckgo.query('Python')
if r.type == 'disambiguation':
print r.related # [<duckduckgo.Result object>]
编辑:python-duckduckgo使用的DuckDuckGo API没有为您提供所有搜索结果链接
我们的即时回答API让您可以免费访问我们的许多瞬间 答案如:主题摘要(API示例),类别(API示例), 消除歧义(API示例),!bang重定向(API示例),以及 定义(API示例)。
但是,此API不包含我们的所有链接。就是这样 不是完整的搜索结果API或获取DuckDuckGo结果的方法 超出我们即时答案的应用程序。因为我们的方式 生成我们的搜索结果,遗憾的是我们没有权利 完全联合我们的结果。出于同样的原因,我们不能允许 在没有品牌的情况下构建我们的结果。请看我们的合作伙伴 页面了解有关指南和与我们联系的更多信息。
您无法使用DuckDuckGo API执行您想要的操作,但Stackoverflow上已发布了可能的解决方法:https://stackoverflow.com/a/11923803/241866