1

我正在使用CasperJS对我的银行对帐单进行刮刀,到目前为止,我已经成功登录并进入了对帐单页面。我完成了获得第一页声明的表格,但我需要完成它。

银行的网站可以选择导出为 .txt 文件(实际上是 CSV 文件),但为了下载它,我必须能够下载 POST 请求的响应标头中的附件形式的文件我通过单击按钮提交表单。

所以我想我可以通过 AJAX 进行 POST,获取响应并输出它。我尝试在萤火虫控制台上运行代码并且它可以工作,但由于某种原因它在 CasperJS 中不起作用。

顺便说一句,我尝试使用 --web-security=no ,仍然无法正常工作

这就是我尝试这样做的方式:

            this.then(function() {
                eurl = "http://bankurl.com";
                response = this.evaluate(function() {
                params = $("#lForm").serialize();
                $.ajax({
                    type: "POST",
                    url: eurl,
                    data: params,
                    success: function (data) {
                        return data.responseText;
                    },
                    error: function (xhr,status,error){
                        return error;
                    }

                });
            });
            this.echo(response);
        });
4

2 回答 2

1

好吧,在努力找到解决这个问题的方法之后,我终于做到了,我只是将 ajax 调用放在 try catch 中,发现错误是它没有读取 eurl 变量(我在评估之外声明了它)。我把它放进去,它起作用了。谢谢你的帮助

于 2013-08-23T02:39:56.030 回答
1

我无法使用您提供的代码对此进行测试,但看起来您只是没有从evaluate().

return __utils__.sendAJAX(url, 'POST', params);

您可能还需要使用以下命令调用 CasperJS:

casperjs --ignore-ssl-errors=true /path/to/script.js
于 2013-08-22T16:41:18.203 回答