Javascript 如何组织我的casperjs脚本
我当前的脚本如下所示(伪代码):Javascript 如何组织我的casperjs脚本,javascript,phantomjs,casperjs,code-organization,Javascript,Phantomjs,Casperjs,Code Organization,我当前的脚本如下所示(伪代码): casper.start(一些示例url,函数(){ 数据=JSON.parse(this.getPageContent())的列表 对于(变量i=0;i
casper.start(一些示例url,函数(){
数据=JSON.parse(this.getPageContent())的列表
对于(变量i=0;i
我已经了解了
\uuuutils\uuuuu.sendAJAX
应该放在中。评估,然后将其放在casper中。然后
。然而,在我将代码更改为该表单后,似乎所有的POST
请求都没有发送出去。有人能给我指一下正确的方向吗?唯一的限制是\uuuUtils\uUuUu
仅在页面上下文中定义/注入(在casper.evaluate
内部)。所以你不能在外面使用它。由于将false
作为第三个参数传递给\uuuutils\uuuuu。sendAJAX
使其成为阻塞调用,因此可以在脚本中使用它
for(var i = 0; i < a_list_of_data.length; i++){
entry = a_list_of_data[i];
entry_url = entry.get_url();
result = this.evaluate(function(){
return __utils__.sendAJAX(entry_url, "POST", {some: "data"}, false, {some: "option"});
});
casper.download(result, ...);
}
for(变量i=0;i
请注意,casper.download
被任意限制为30秒的下载(硬限制)和只有几兆字节的数据。实际上,它在幕后使用了\uuutils\uuuuu.sendAJAX
如果需要二进制数据,则需要在从页面上下文返回字符串并在casper上下文中解码之前对其进行编码
所有casper.then*
和casper.wait*
函数都会创建一个步骤,该步骤将被添加到步骤队列中并逐个执行。一些函数还创建一些步骤,如casper.repeat
、casper.start
、casper.run
等。如果有一个名为的回调函数,那么
或onTimeout
,这是一个步骤
要执行的所有代码都必须至少包含在一个step函数中,否则它将在控制流之外执行。有一些策略可以跟上中断的控制流。但是这里不需要这些。我不知道您为什么要询问代码组织,因为这是一个很容易解决的小示例。
for(var i = 0; i < a_list_of_data.length; i++){
entry = a_list_of_data[i];
entry_url = entry.get_url();
result = this.evaluate(function(){
return __utils__.sendAJAX(entry_url, "POST", {some: "data"}, false, {some: "option"});
});
casper.download(result, ...);
}