5

这是我的 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

4

1 回答 1

4

那是记录在案的行为。有不同的结果属性。

您的第一个查询返回结果列表。

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,它不会给你所有的搜索结果链接

我们的 Instant Answer API 让您可以免费访问我们的许多即时答案,例如:主题摘要(API 示例)、类别(API 示例)、消歧(API 示例)、!bang 重定向(API 示例)和定义(API 示例)。

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

您无法使用 DuckDuckGo API 做您想做的事情,但 Stackoverflow 上已发布了一种可能的解决方法:https ://stackoverflow.com/a/11923803/241866

于 2013-08-10T10:12:13.777 回答