如何使用CasperJS

时间:2015-05-08 01:50:45

标签: javascript encoding casperjs binaryfiles

我正在编写一个爬虫,需要使用POST下载表单请求后生成的文件。

我已成功使用this.download(url,' POST',Params)作为常规表单。 其中一个站点有许多使用相同名称的字段,因此阻止我使用常规下载方法。

在尝试了很多事情之后,我尝试使用$.ajax()__utils.sendAJAX()来处理这样的表单:

response = this.evaluate(function(){
  url=...
  params = $('form#theirForm').serialize();
  data = __utils__.sendAJAX(url, 'POST', params,false,{contentType:"application/x-www-form-urlencoded"});
return __utils__.encode(data);
});
function decode_base64(s) { var e={},i,k,v=[],r='',w=String.fromCharCode; var n=[[65,91],[97,123],[48,58],[43,44],[47,48]]; for(z in n){for(i=n[z][0];i<n[z][1];i++){v.push(w(i));}} for(i=0;i<64;i++){e[v[i]]=i;} for(i=0;i<s.length;i+=72){ var b=0,c,x,l=0,o=s.substring(i,i+72); for(x=0;x<o.length;x++){ c=e[o.charAt(x)];b=(b<<6)+c;l+=6; while(l>=8){r+=w((b>>>(l-=8))%256);} } } return r; }
casper.then(function() {
    utils.dump(response);
    fs.write("test.zip",decode_base64(response),'w');
});

代码返回base64数据,我将其转换并存储在test.zip文件中。 但我可以解压缩它,说它已经损坏了。 我转储了正确的zip文件=&gt;

的数据
PK^C^D^T^@^H^@^H^@<F4><89><96>F^@^@^@^@^@^@^@^@^@^@^@^@?^@^@^@fourniture denr<E9>es alimentaires - dietetique infantile\CCAP.pdf<AC><BC>^ET\K<D3><F7>;^D<B7><U+0B81>^@<C1><99>^Y^F'^D<B7><E0>^D^ON<90><E0><EE><EE><EE>^Dwww'^P<9C>^D^H<EE>^^܂<C3>%'<CF>9<E7><C9><F7><U+07B5><BE>7<F7>f^SVOzf

将它与我文件的第一行比较:

PK^C^D^T^@^H^@^H^@)_^M^@^@^@^@^@^@^@^@^@^@^@^@^@b^@^@^@fourniture denr<FD>es alimentaires - dietetique infantile\Bordereau de prix dietetique infantile.xlsx<FD>zuT<FD>I<FD><FD><FD><FD>^^4hp^M^D^M^R^H<FD>.<FD><FD>}p<FD>3<FD>kpw<FD>@pw^M<FD><FD>^R4<FD>Gv<FD>~<FD>[<FD><FD><FD><FD><FD>

任何人都知道可能出了什么问题?

我尝试了很多东西(编码工具,编码设置,从chrome控制台转储以获得纯粹的base64等)。

我不明白为什么它与latin-1或utf8编码有关,因为网站要求我选择使用哪种编码。试过两个。

0 个答案:

没有答案