通过 URL 每页获得更多搜索结果

Posted

技术标签:

【中文标题】通过 URL 每页获得更多搜索结果【英文标题】:Getting more search results per page via URL 【发布时间】:2013-07-13 17:04:09 【问题描述】:

我一直在编写一个从网络搜索中提取数据的程序。为了获得更多数据,理想情况下,我希望通过脚本为每个查询提取更多结果(比如说 100 个左右)。

我的问题是,有没有办法修改 Google、Yahoo 或 Bing 的 URL(按此顺序优先),以便每次查询可以获得超过 10 个结果?

对于 Google,附加 &num=99 曾经在某一时刻有效,但不再有效 :( 我看到了&count=50 的类似追加,但这在任何搜索引擎上都不起作用。

【问题讨论】:

这个问题属于Web Applications SE。 【参考方案1】:

num=99 不适用于 Google 的原因是,num 参数的实际值未被使用,而是与允许值列表进行比较。

允许的值为 10、20、30、40、50 和 100。该字段的任何其他值都将被忽略。

对于 Bing,参数是 count=##,其中 ## 可以是 1-100 之间的任何值。

对于 Yahoo,参数是 n=##,其中 ## 可以是 1-100 之间的任何值。

在大多数情况下,URL 参数仅在用户未指定要在搜索引擎的搜索设置中显示的搜索结果数量时才有效。否则,该 cookie 将优先。

【讨论】:

我刚刚用一些随机数对其进行了测试,效果很好:bing.com/search?q=cats&count=1bing.com/search?q=cats&count=13bing.com/search?q=cats&count=75 你是对的!它只适用于我的“私人标签”,而不是我的公共会话。也许是一个饼干。感谢您再次检查。【参考方案2】:

我不知道您使用的是哪种编程语言,但总体思路是使用正确的 cookie 设置加载 google 搜索页面(在撰写本文时它们是如何存储的)。

您可以在 Google Chrome 中设置并查看 cookie。为避免不必要的 cookie,首先打开一个新的隐身窗口 (Ctrl+Shift+N),然后导航到搜索设置 (@987654321 @)。

在撰写本文时,您需要选中“从不显示即时结果”,然后将“每页结果”的滑块调整为您想要的任何值。点击底部的“保存”后,您现在可以通过打开开发者控制台 (Ctrl+Shift+J) 查看您的 cookie,并且导航到资源选项卡。

同样,在撰写本文时,Google 设置了两个变量,NIDPREFPREF 是我们有兴趣让搜索结果发生变化的人。它的外观示例:

ID=8155cce71859f7d0:U=fe6e69e174148b7b:FF=0:LD=en:NR=40:TM=1379366492:LM=1379366586:SG=2:S=FoybwBhek8noyp0t

(此键获取 40 个结果,如 NR=40 所示)

使用此键 (PREF) 和它的值(如上所示),您可以在通过 wget、curl 等请求页面时发送 cookie。在我最近的与此相关的项目中,我使用node 和requests library。

这是一个关于如何获取具有 40 个结果的 Google 页面的 sn-p(请求文档中的修改示例):

var j = request.jar();
var cookie = request.cookie('PREF=ID=8155cce71859f7d0:U=fe6e69e174148b7b:FF=0:LD=en:NR=40:TM=1379366492:LM=1379366586:SG=2:S=FoybwBhek8noyp0t');
j.add(cookie);
request(url: 'https://www.google.com/search', jar: j, 
function(error, response, body) 
    // do something with the body (html) of the page! 
);

或者查看 wget / curl 的手册页。我知道 wget 指定了一个您可以使用的 --load-cookies 标志。

您可以将此应用到您需要内容的任何其他基于 cookie 的网站。雅虎!使用基于 cookie 的设置 - 我不确定 Bing 使用什么。

【讨论】:

NR 意思? @Pacerier 可能有 N R 个结果【参考方案3】:

&n=100 添加到链接。获取包含 100 个结果的页面

【讨论】:

我认为应该&num=100,而不是&n=100。它可能仅适用于 Google 搜索,也可能不仅适用于 Google 搜索。【参考方案4】:
https://www.google.com/search?q=who+is+google&num=100

您仍然可以在 URL 中使用 num 参数来设置每页要获取的结果数。

【讨论】:

以上是关于通过 URL 每页获得更多搜索结果的主要内容,如果未能解决你的问题,请参考以下文章

Baidu URL的部分参数

打印信息-脚本运行是否成功

在 ListView 滚动结束时加载更多结果

在 URL 请求问题中发送页面编号。获得成功但结果为空

Django中使用JS通过DataTable实现表格前端分页,每页显示页数,搜索等功能

闪存搜索字符串