Javascript 使用Node.Js中的请求从Google搜索结果中删除内容

Javascript 使用Node.Js中的请求从Google搜索结果中删除内容,javascript,node.js,node-request,Javascript,Node.js,Node Request,对于我的Node.Js应用程序,我需要从.com域获取Google搜索结果的第一页,因为我需要“人们也搜索”知识图信息,它只显示在Google.com上 我想我可以使用request和cheerio模块从谷歌的搜索结果页面中删除内容,但当我尝试访问我需要的URL时,即https://www.google.com/search?gws_rd=ssl&site=&source=hp&q=google&oq=googleGoogle自动将我重定向到.de域(因为我的总部在德国) 我尝试将其设置为首次加

对于我的Node.Js应用程序,我需要从
.com
域获取Google搜索结果的第一页,因为我需要
“人们也搜索”
知识图信息,它只显示在Google.com上

我想我可以使用
request
cheerio
模块从谷歌的搜索结果页面中删除内容,但当我尝试访问我需要的URL时,即
https://www.google.com/search?gws_rd=ssl&site=&source=hp&q=google&oq=google
Google自动将我重定向到
.de
域(因为我的总部在德国)

我尝试将其设置为首次加载
http://www.google.com/ncr
url,可在浏览器中自动关闭特定国家/地区的重定向,但它不起作用

有人知道我可以做些什么来让它工作吗

这是我的密码…谢谢

var request = require("request");
var cheerio = require("cheerio");

function dataCookieToString(dataCookie) {
    var t = "";
    for (var x = 0; x < dataCookie.length; x++) {
        t += ((t != "") ? "; " : "") + dataCookie[x].key + "=" + dataCookie[x].value;
    }
    return t;
}

function mkdataCookie(cookie) {
    var t, j;
    cookie = cookie.toString().replace(/,([^ ])/g, ",[12],$1").split(",[12],");
    for (var x = 0; x < cookie.length; x++) {
        cookie[x] = cookie[x].split("; ");
        j = cookie[x][0].split("=");
        t = {
            key: j[0],
            value: j[1]
        };
        for (var i = 1; i < cookie[x].length; i++) {
            j = cookie[x][i].split("=");
            t[j[0]] = j[1];
        }
        cookie[x] = t;
    }

    return cookie;
}

var dataCookie = mkdataCookie('MC_STORE_ID=66860; expires=' + new Date(new Date().getTime() + 86409000));


request({
    uri: "https://www.google.com/ncr",
    headers: {
        'User-Agent': 'Mozilla/5.0',
        "Cookie": dataCookieToString(dataCookie)
    }
}, function(error, response, body) {

    request({
        uri: "https://www.google.com/search?gws_rd=ssl&site=&source=hp&q=google&oq=google",
        headers: {
            'User-Agent': 'Mozilla/5.0'
        }
    }, function(error, response, body) {
        console.log(body);
        var $ = cheerio.load(body);

        $(".kno-fb-ctx").each(function() {
            var link = $(this);
            var text = link.text();

            console.log(text);
        });
    });
});
var请求=要求(“请求”);
var cheerio=要求(“cheerio”);
函数dataCookieToString(dataCookie){
var t=“”;
对于(var x=0;x
解决方案是:比我想象的要简单得多

但是,我仍然有一个问题,就是我得到的
正文
不包含仅在启用javascript时显示的内容

有人知道如何修改下面的代码,以便在正文中也包含支持javascript的内容吗

var request = require('request');
var cheerio = require("cheerio");

request = request.defaults({jar: true});

var options = {
    url: 'http://www.google.com/ncr',
    headers: {
        'User-Agent': 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; rv:1.9.2.16) Gecko/20110319 Firefox/3.6.16'
    }
};

request(options, function () {

    request('https://www.google.com/search?gws_rd=ssl&site=&source=hp&q=google&oq=google', function (error, response, body) {

        var $ = cheerio.load(body);

        $("li").each(function() {
            var link = $(this);
            var text = link.text();

            console.log(text);
        });
    });
});

我已经成功地在heroku上免费运行了scraper,或者你可以使用heroku或其他虚拟机作为http代理,在本地运行scraper,但要通过代理。你意识到像这样抓取Google是违反他们的TOS的,对吗?@JohnMueller不,我没有。我没有抓取他们。我只是在检查它在理论上是如何工作的。没有实际内容B当然可以。但是你能给我指一下有问题的TOS吗?这样我就可以看到发生了什么?你可以使用我们支持“人们也搜索”解析的库: