通过URL获取每页搜索结果

时间:2013-07-15 18:09:37

标签: search-engine url-parameters

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

我的问题是,有没有办法修改Google,Yahoo或Bing的网址(按此顺序排列),以便每次查询可以获得10个以上的搜索结果?

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

4 个答案:

答案 0 :(得分:9)

num=99对Google不起作用的原因是因为num参数的实际值未被使用,而是与允许值。

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

对于Bing,参数为count=##,其中##可以是1-100。

对于Yahoo,参数为n=##,其中##可以是1-100。

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

答案 1 :(得分:3)

我不知道您使用的是哪种编程语言,但一般的想法是使用正确的Cookie设置加载谷歌搜索页面(这是在撰写本文时它们的存储方式)。

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

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

同样,在撰写本文时,Google设置了两个变量NIDPREFPREF是我们感兴趣的,可以让搜索结果发生变化。它可能是一个例子:

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

(此键可获取NR=40所示的40个结果)

使用此密钥(PREF)及其值(如上所示),您可以在通过https://www.google.com/preferences等请求页面时发送Cookie。与此相关的最近项目,我使用

以下是有关如何获取包含40个结果的Google网页的摘录(请求文档中的修改示例):

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使用什么。

答案 2 :(得分:2)

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

答案 3 :(得分:0)

https://www.google.com/search?q=who+is+google&num=100

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