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

Scraping javascript generated content using request in Node.Js

本文关键字:JavaScript 请求 Node Js 使用 抓取      更新时间:2023-09-26

我需要从谷歌搜索结果中抓取一些只显示在浏览器中的内容(我怀疑这是在启用Javascript的时候)——特别是他们的知识图谱"人们也搜索"内容。

我使用 requestcheerio 的组合来抓取,并且已经设法从.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,你必须使用浏览器。幸运的是,有无头浏览器专门用于此目的。我建议PhantomJS。