Phantomjs v.2.1 addCookie()
始终返回错误
也是最近刚接触Phantomjs,打算用来爬一爬学校的信息门户海报(因为学校的海报有的是文字又有的是图片,图片的链接也比较奇怪:
my.**.edu.cn/attachmentDownload.portal?xxxxxxxxxxxxx
所以希望直接把网页的内容部分截图下来,因为需要登陆,所以需要用到cookies。然后我由官方API文件 http://phantomjs.org/api/知道了可以用 phantom.addCookie()
来添加cookies。
var login1 = {
'name': 'Login.Token1',
'value': '15***227',
'path': '/',
}
if (phantom.addCookie(login1)) {
console.log('Cookie_login1 success')
} else {
console.log('Fail')
}
//............Fail
可是再实际用的时候发现怎么都不成功,永远都是Fail
因为感觉后面的叙述有些啰嗦以及些许的语焉不详,所以先上结论:
虽然它返回false
,但是实际上操作是成功了的!
一开始以为是添加的Cookie有问题
于是乎我到看到这个文章phantomjs截图的实践——
虽然他这么说可是官方文件里面没有这么说——
不过在介绍 'webpage' 类的 ‘addCookie’ 的时候有说明——
好吧,那就弄吧,于是我改成了这样
var login1 = {
'name': 'Login.Token1',
'value': '15***227',
'path': '/',
'domain':'https://www.baidu.com' //呵呵
}
if (phantom.addCookie(login1)) {
console.log('Cookie_login1 success')
} else {
console.log('Fail')
//............Fail
还是失败!我去怎么回事!(当然有同学可能已经发现这里的问题了。)
但无论如何......
后来我去Google找
(吐槽一下,我本来还以为中国国内讨论技术的挺多的了,可是去搜phantomjs——少!太少了!)
于是在phantomjs的github官网上看到了这个今年三月的issues
那个....我升级到了v2.1,addcookies怎么老说失败啊
——恩,看来是个bug呢,在这里纠结了挺长时间的我说了一句“窝草”。
- 额,我英语不太好,帖子后面说'fixed',我就以为已经修复了,于是打算去升级
phantomjs
。我再下了一遍官网的版本,可是问题还是在。 - 我就回帖子去,发现修复修复到了phantomas——‘what!这是什么?’(百度也没有告诉我。),个人感觉上像是试验田这类东西。
我又去用npm,brew,pip去尝试
- npm 下不下来=。=
- brew 里面更新没反应
- pip 这个.....
——后来,后来,后来
var login1 = {
'name': 'Login.Token1',
'value': '15***227',
'path': '/',
'domain':'baidu.com' //这里! 这里
}
if (phantom.addCookie(login1)) {
console.log('Cookie_login1 success')
} else {
console.log('Fail')
//............Fail
'domain' 好像不可以加协议(http:// https:// ftp://)【猜测】
不过最后还是Fail
就是这个时候
我他妈想起来,
那个....我升级到了v2.1,addcookies怎么老说失败啊的标题是:
addCookie always returns false in v2.1.1 #14047
用的是——return,return,return......
不是——fail,fail,fail
所以有可能实际上操作成功了,不过返回失败。
var login1 = {
'name': 'Login.Token1',
'value': '15***227',
'path': '/',
'domain':'baidu.com' //这里! 这里
}
if (phantom.addCookie(login1)) {
console.log('Cookie_login1 success')
} else {
console.log('Fail')
cookies = phantom.cookies
console.log('Listing cookies:');
for(var i in cookies) {
console.log(cookies[i].name + '=' + cookies[i].value);
}
//............Fail.......
//but return sometime!
//好日子 好日子
//啦啦啦♪(^∇^*)
真的是这样的。
总之就是虽然它返回false
,但是实际上操作是成功了的!
【完】
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。