用 Node 做爬虫时有带 cookie 的请求怎么破?
发布于 9 年前 作者 hanzichi 11160 次浏览 最后一次编辑是 8 年前 来自 问答

简单的说,就想请求一个 qq 好友空间的页面,获取空间 title,代码如下:

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

superagent
  .get('http://user.qzone.qq.com/xxx')
  .set('Cookie', 'xxx')
  .end(function (err, sres) { // callback
    // 常规的错误处理
    if (err) {
      console.error(err);
    }

    var $ = cheerio.load(sres.text);
    var ans = $('#top_head_title').text();
    console.log(ans);
  });

其中,第一个 xxx 是好友 qq 号,第二个 xxx 是我访问好友空间页面时,chrome Network 面板下 Doc 文件获取时的 cookie,但是 node 下并没有输出,不知道是哪里姿势不对,恳请指导下,谢谢大家!

4 回复

对 superagent 封装一下,每次都自动把新 cookie 取出,再下一次请求的时候 set 进去。 我搜了搜 superagent 和 request,都没有找到很便利的方式做这事。我印象中有的,引入一个 cookiejar 之类的库就好了。

@alsotang 哇唐大神!万分感激,可是初学者表示听不大懂 = =

request 可以指定 jar ,https://www.npmjs.com/package/request 拉到最下,有代码演示 cookie jar 的使用

@klesh 谢谢谢谢,我看看

回到顶部