DuckDuckGo API - 如何获得更多结果?

DuckDuckGo API - How to get more results?

使用 DuckDuckGo 的默认搜索 API returns 只有第一页的结果(我猜是大约 25)。有什么方法可以获取更多结果或导航到搜索结果的第 2、3 页?

像 Faroo 这样的网站有一个名为 s(代表开始)的参数,如果我们想要前 10 个结果,可以将其设置为 111 如果我们想要接下来的 10 个结果等等。 DuckDuckGo 也有类似的东西吗?

根据 DuckDuckGo Search API documentation,所有可用参数为:

q: query

format: output format (json or xml)

If format=='json', you can also pass:

callback: function to callback (JSONP format) pretty: 1 to make JSON look pretty (like JSONView for Chrome/Firefox)

no_redirect: 1 to skip HTTP redirects (for !bang commands).

no_html: 1 to remove HTML from text, e.g. bold and italics.

skip_disambig: 1 to skip disambiguation (D) Type.

特别注意:

This API does not include all of our links, however. That is, it is not a full search results API or a way to get DuckDuckGo results into your applications beyond our instant answers.

TL/DR; - 安装 TamperMonkey,在下面添加简短脚本 (完整说明如下),浏览器将在您滚动时自动延迟加载下一页。

在通过 Google 找到这个答案后没有找到我正在寻找的信息,我编写了这个小的 TamperMonkey 脚本来完成这项工作。我 post 这里是为了未来的 google 员工。

以下用户脚本适用于 Chrome、Firefox 和 Opera。脚本下方有安装说明,下方是 TamperMonkey 的简要说明。

此脚本的灵感来自于 Tumpio 的 Endless Google,并以类似的方式命名(以纪念)。

// ==UserScript==
// @name         Endless DuckDuckGo
// @namespace    http://tampermonkey.net/
// @match        https://duckduckgo.com/?q=*
// @require      http://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js
// @grant        none
// ==/UserScript==

(function() {
    'use strict';
    $(window).scroll(function(){
        var els = document.querySelectorAll('.result.result--more');
        if (els.length){
            var elmore = document.querySelectorAll('.result--more__btn.btn.btn--full');
            if (elmore.length){
                elmore[0].click();
            }
        }
    });
})();  //

如何安装上述脚本:

  1. Chrome (or the "add-in" for Firefox) 安装 TamperMonkey 扩展。

  2. 您会看到 the TamperMonkey icon 出现在浏览器的顶部

  3. 在 DuckDuckGo 上搜索

  4. 单击 TamperMonkey 图标,然后从下拉菜单中选择仪表板

  5. 沿着仪表板页面顶部的选项卡,单击选项卡条左侧的 [+] 图标

  6. TamperMonkey 编辑器将打开一个空白的 UserScript 模板。删除整个示例脚本并将其替换为 post.

  7. 中的脚本
  8. 保存[Ctrl] + [s]

  9. 运行另一个DuckDuckGo搜索并向下滚动页面...真正的幸福是你的。

什么是 TamperMonkey:

一个很好的概述是 here

TamperMonkey 是一个浏览器扩展程序,每个主要浏览器都有一个版本的 TamperMonkey。您可能已经在使用 AdBlock 或 uBlock 浏览器扩展 (如果没有,为什么不呢?),这只是另一个类似的扩展。无论如何,要为 Chrome 或 Brave 安装,请转到 Chrome Web Store 并搜索 Jan Binoc 的 TamperMonkey。安装它。 (是的,这很安全 - 有数十万用户,主要是编码人员)。请考虑捐赠 - Jan 值得您的支持(不,我不认识他,是的,我捐赠了。)

在 TamperMonkey 之前,还有另一个名为 GreaseMonkey 的扩展程序可以做同样的事情,但只适用于 Firefox。然而,GreaseMonkey 作者停止维护它或其他什么,Jan Binoc 站出来用 TamperMonkey 解决问题。

TamperMonkey 允许我们将自己的代码注入任何网页,以编程方式在本地计算机上操作网页。这是如何运作的? 简单的解释: 当您查看网页时,您实际上并没有查看它 "directly from the web server" - 您的浏览器首先将网页代码的本地副本下载到浏览器的缓存文件夹中并显示从那里给你。因此,当页面从缓存 (在您的本地硬盘驱动器上) 加载到浏览器中时,TamperMonkey 可以拦截页面并在显示之前对其进行修改。 该解释过于简单化,在技术上并不完全准确,但本质上就是它的工作原理, TamperMonkey 工作的原因。 最重要的是: 以上几行解释了为什么页面不会为任何其他人更改 - 只为您在您自己的计算机上更改。

TamperMonkey 是学习一点 javascript/css/html 的绝佳理由。使用它,您可以执行隐藏或重新排列网页上的图像、从页面中删除混乱、完全重新格式化页面等操作。例如,我最喜欢的新闻网站之一有很多混乱。因此,我访问了他们的 RSS 提要页面,它就像一个很好的文章索引,但也有太多我不想看到的东西(主要是不必要的缩略图和太窄的列)。我写了一个简短的 TM 脚本来隐藏所有图像并加宽列,现在,我看到的不是每个屏幕 5 或 6 篇文章摘要,而是 ~ 20。

我所见过的 html/css/js 最好、最简洁的入门读物是 Lynda.com。 (您可能已经可以通过当地的借书证访问 - 我很惊讶地发现我这样做了。) 艾玛·桑德斯 (Emma Saunders) 有一个名为 D3.js Essential Training for Data Scientists 的系列。 课程以 html/css/js 中的两个简短教程(Recalling HTML Basics (4m)Understanding HTML5 (3m) )开始,它们本身就值得大学课程的学费。 为什么每个人都不能这样教? 无论如何,这就是您所需要的 - 前两个(3 分钟和 4 分钟)视频。现在,去调整一个网页。

(最后免责声明:不,我也不认识 Emma Saunders,我也与 Binoc 或 Saunders 的产品没有任何关系。我只是一个 运行-普通用户和粉丝。)