javascript - 使用 Node.Js 中的请求抓取 javascript 生成的内容

标签 javascript jquery node.js node-request

我需要从 Google 搜索结果中抓取一些仅在浏览器中显示的内容(我怀疑是在启用 Javascript 的情况下),特别是他们的知识图谱“人们也搜索”内容。

我使用 request 的组合和cheerio刮并已经设法强制加载 .com 的结果但是,知识库框不会出现在 body 中我的结果,可能是因为它是 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);
        });
    });
});

最佳答案

您不能使用 Node 的请求,因为您只是下载静态内容。为了渲染 JavaScript,您必须使用浏览器。幸运的是,有专门用于此目的的 headless 浏览器。我建议PhantomJS .

关于javascript - 使用 Node.Js 中的请求抓取 javascript 生成的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27736747/

相关文章:

node.js - 部署 Web 应用程序时是否应该重新创建容器?

node.js - 无法使用 systemd 运行 Node 应用程序

javascript - 忽略对 jquery.change 的关注

javascript - 无法按下拉列表中的选定值过滤数据表

Javascript 替换

javascript - jquery点击之间的超时

node.js - 在node_modules中找不到bigchaindb驱动程序?

javascript - Uncaught ReferenceError : Invalid left-hand side expression in postfix operation

jquery - 如何使用 css 更改特定页面内的 h2 位置?

javascript - 如何按对象限制 Javascript 计数器变量的范围?