如何获取Google的知识图“人们还搜索”内容?

时间:2015-01-02 02:55:55

标签: javascript node.js phantomjs

我正在尝试让搜索结果页面上的Google“人们也搜索”内容,而我正在使用PhantomJS来削减他们的搜索结果。但是,我需要的知识库部分没有出现在我得到的body中。有谁知道我可以做什么让它给我看?

以下是代码:

var phantom = require('phantom');

phantom.create(function (ph) {
    ph.createPage(function (page) {
        page.open("http://www.google.com/ncr", function (status) {
            console.log("opened google NCR ", status);
            page.evaluate(function () { return document.title; }, function (result) {
                console.log('Page title is ' + result);
                page.open("https://www.google.com/search?gws_rd=ssl&site=&source=hp&q=google&oq=google", function (status) {
                    console.log("opened google Search Results ", status);
                    page.evaluate(function () { return document.body; }, function (result) {
                        console.log(result);
                        ph.exit();
                    });
                });
            });
        });
    });
});

PS我必须首先请求'google.com/ncr'强制加载Google.Com的结果,因为我在德国,德语版本没有知识图。也许上面的请求也可以简化......

2 个答案:

答案 0 :(得分:1)

可能是在你获得身体时页面的js还没有结束。尝试将此添加到您的page.evaluate中。

window.setTimeout( function() { <your page logic> }, 1000);

你可能需要摆弄时间。

此外,您可以在打开页面之后但在运行评估之前执行page.includeJs('http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js', function(){<your logic>});来使用jquery。

答案 1 :(得分:0)

找到答案 - 必须手动将userAgent设置为Chrome

以下修改后的代码:

var phantom = require('phantom');

phantom.create(function (ph) {
    ph.createPage(function (page) {
        page.set('settings.userAgent', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_5) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.89 Safari/537.1');
        page.open("http://www.google.com/ncr", function (status) {
            console.log("opened google NCR ", status);
            page.evaluate(function () { return document.title; }, function (result) {
                console.log('Page title is ' + result);
                page.open("https://www.google.com/search?gws_rd=ssl&site=&source=hp&q=google&oq=google", function (status) {
                    console.log("opened google Search Results ", status);
                    page.evaluate(function () { return document.body; }, function (result) {
                        console.log(result);
                        ph.exit();
                    });
                });

            });
        });
    });
});