我不知道您使用的编程语言,但一般思路是使用正确的 cookie 设置加载谷歌搜索页面(在撰写本文时是这样存储的)。
您可以在 Google Chrome 中设置和查看 cookie。为了避免不必要的 cookie,请从打开一个新的隐身窗口(
Ctrl+
Shift+
N),并导航到搜索设置(
https://www.google.com/preferences)开始。
在撰写本文时,您需要选中“从不显示即时结果”,然后调整“每页结果”的滑块到您想要的值。在底部点击“保存”后,您现在可以通过打开开发人员控制台(
Ctrl+
Shift+
J),并导航到资源选项卡来查看您的 cookie。
同样,在撰写本文时,Google 设置了两个变量:
NID
和
PREF
。我们感兴趣的是
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
)和相应的值(如上所示),你可以在通过
wget、
curl等请求页面时发送cookie。在我最近与此相关的项目中,我使用了
node和
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) {
});
或者查看wget / curl的手册页面。我知道wget指定了一个
--load-cookies
标志,您可以使用它。
您可以将此应用于任何其他基于cookie的网站,以获取所需的内容。雅虎!使用基于cookie的设置-我不确定必应使用什么。