【问题标题】:DuckDuckGo search returns 'List Index out of range'DuckDuckGo 搜索返回“列表索引超出范围”
【发布时间】:2013-08-10 09:17:17
【问题描述】:

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

【问题讨论】:

    标签: python duckduckgo-api


    【解决方案1】:

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

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

    但是,此 API 不包含我们的所有链接。也就是说,它是 不是完整的搜索结果 API 或将 DuckDuckGo 结果输入的方法 您的应用程序超出了我们的即时答案。因为我们的方式 生成我们的搜索结果,很遗憾我们没有权限 充分整合我们的结果。出于同样的原因,我们不能允许 在没有品牌的情况下构建我们的结果。请查看我们的合作伙伴 页面以获取有关指南的更多信息并与我们联系。

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

    【讨论】:

    • 谢谢。但是当我使用第二个脚本搜索 Python 时,我得到了一个 url duckduckgo.com/Colt_Python。此链接有指向其他网站的链接。我如何获得这些网站的列表。 ed:- 'python 的维基百科链接'
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-16
    • 2011-06-14
    • 2016-06-04
    • 1970-01-01
    相关资源
    最近更新 更多