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

9
我正在编写一个从网络搜索中提取数据的程序。为了获取更多数据,我希望通过脚本(假设是100个左右)每次查询可以提取更多结果。
我的问题是,是否有一种方法可以修改Google、Yahoo或Bing(按照偏好顺序)的URL,以便我可以在每次查询中获取超过10个结果?
对于Google,添加“&num=99”曾经有效,但现在不再起作用:(我看到一个类似的附加项“&count=50”,但这在任何搜索引擎上都不起作用。

这个问题应该发布在Web Applications SE上。 - unor
5个回答

15
num=99在Google不起作用的原因是该参数的实际值未被使用,而是与一组允许的值进行比较。

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

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

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

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


1
你说得对!它只在我的“私密选项卡”中运行,而不是在我的公共会话中运行。可能是个cookie的问题。再次感谢你的检查。 - Mario M.
1
根据https://www.google.com/support/enterprise/static/gsa/docs/admin/current/gsa_doc_set/xml_reference/request_format.html,`num`可以高达1000。这个页面非常全面。不幸的是,Google忽略了大多数网站的页面,因此它们永远不会被找到。 - Patanjali

3
我不知道您使用的编程语言,但一般思路是使用正确的 cookie 设置加载谷歌搜索页面(在撰写本文时是这样存储的)。
您可以在 Google Chrome 中设置和查看 cookie。为了避免不必要的 cookie,请从打开一个新的隐身窗口(Ctrl+Shift+N),并导航到搜索设置(https://www.google.com/preferences)开始。
在撰写本文时,您需要选中“从不显示即时结果”,然后调整“每页结果”的滑块到您想要的值。在底部点击“保存”后,您现在可以通过打开开发人员控制台(Ctrl+Shift+J),并导航到资源选项卡来查看您的 cookie。
同样,在撰写本文时,Google 设置了两个变量:NIDPREF。我们感兴趣的是 PREF,以改变搜索结果。以下是可能的示例:
ID=8155cce71859f7d0:U=fe6e69e174148b7b:FF=0:LD=en:NR=40:TM=1379366492:LM=1379366586:SG=2:S=FoybwBhek8noyp0t

(This key fetches 40 results as indicated by NR=40)
使用这个键(PREF)和相应的值(如上所示),你可以在通过等请求页面时发送cookie。在我最近与此相关的项目中,我使用了requests库
以下是一个代码片段,展示如何获取包含40个结果的Google页面(来自requests文档的修改示例):
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的设置-我不确定必应使用什么。

NR 的意思是什么? - Pacerier
@Pacerier 可能是“结果数量”(Number of Results)的缩写。 - zen

2

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


2
我认为应该使用&num=100,而不是&n=100。并且它可能只适用于谷歌搜索。 - Peter Mortensen

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

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

0
本地存储 www.google.com,设置项 'NR' : 'value'// 例如 422 作为值的数量 yo want

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接