用 Node 做爬虫时有带 cookie 的请求怎么破?
简单的说,就想请求一个 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 谢谢谢谢,我看看