动态生成的页面该怎么抓取?
发布于 9 年前 作者 hanzichi 5893 次浏览 最后一次编辑是 8 年前 来自 问答

最近在学习 alsotang 大神的 《Node.js 包教不包会》,碰到一个问题。比如我要抓取 http://www.cnblogs.com/assassinx/p/4897309.html 的第一条评论,参考 alsotang 的代码,如下:

var cheerio = require('cheerio');
var superagent = require('superagent');

function getFirstComment(url) {
  superagent
    .get(url)
    .end(function(err, sres) {
      if (err) {
        console.error(err);
      }

      var $ = cheerio.load(sres.text);
      var comment = $('.blog_comment_body').eq(0).text();
      console.log(comment)
    });
}

getFirstComment('http://www.cnblogs.com/assassinx/p/4897309.html');

但是结果输出的是空白。我个人思考了下,觉得可能是评论区的代码是动态生成的(可能是错的)。

问题来了,这样的情况应该怎么抓取呢?求大大指导~!thanks in advance!

9 回复

@dou4cc 谢谢,有没有推荐的资料?找了好久没找到…

@hanzichi 这里有个比phantomjs更好的,见www.nightmarejs.org,自己看API Doc。

phantomjs可以获取渲染之后的页面 自豪地采用 CNodeJS ionic

@dou4cc 谢谢谢谢,非常感谢!

@wlpeter 谢谢,我看看去

你的selector是不是错了, 我记得是’.reply_contnet’啊

你可以clone源码对照啊.

@wewea 源码没动态生成…

@hanzichi 没看清, 以为是抓cnode…

回到顶部