简体   繁体   English

在JavaScript iMacros中使用SET!VAR1 EVAL

[英]Using SET !VAR1 EVAL in javascript iMacros

I have a .iim iMacros file for extracting text from a website, it looks like this: 我有一个.iim iMacros文件,用于从网站提取文本,它看起来像这样:

SET !DATASOURCE listofurls.csv
SET !DATASOURCE_LINE {{CSV}}
URL GOTO={{!COL1}}
WAIT SECONDS=1
TAG POS=1 TYPE=PRE ATTR=TXT:* EXTRACT=TXT
SET !VAR1 EVAL("var a=\"{{!EXTRACT}}\"; var b=a.indexOf(\"total\"); var c=parseFloat(a.substring((b+9),(b+9+3))); c")
SET !EXTRACT NULL
SET !EXTRACT {{!VAR1}}
SAVEAS TYPE=EXTRACT FOLDER=* FILE=result.csv

It runs good in Play (Loop) mode, but need to automatically run as a loop automatically launching it from a shell script. 它在“播放”(循环)模式下运行良好,但是需要自动作为循环运行,并从Shell脚本中自动启动它。 As a normal .iim file can't be automated as a loop I tried to convert it to iMacros javascript: 由于无法自动将普通的.iim文件作为循环,因此我尝试将其转换为iMacros javascript:

var accounts = 10;
for(i = 1; i <= accounts; i++){

iimDisplay("Current loop: "+ i);

var extract;
extract =  "CODE:";
extract +=  "SET !DATASOURCE followersapi.csv" + "\n"; 
extract +=  "SET !DATASOURCE_LINE {{CSV}}" + "\n"; 
extract +=  "URL GOTO={{!COL1}}" + "\n"; 
extract +=  "WAIT SECONDS=2" + "\n"; 
extract +=  "TAG POS=1 TYPE=PRE ATTR=TXT:* EXTRACT=TXT" + "\n"; 
extract +=  "SET !VAR1 EVAL("var a=\"{{!EXTRACT}}\"; var b=a.indexOf(\"total\"); var c=parseFloat(a.substring((b+9),(b+9+3))); c")" + "\n"; 
extract +=  "SET !EXTRACT NULL" + "\n"; 
extract +=  "SET !EXTRACT {{!VAR1}}" + "\n"; 
extract +=  "SAVEAS TYPE=EXTRACT FOLDER=* FILE=result.csv" + "\n"; 

iimSet("CSV", i);
iimPlay(extract);

}

I get this error: 我收到此错误:

SyntaxError: missing ; 语法错误:丢失; before statement, line 23 (Error code: -991) 在声明之前,第23行(错误代码:-991)

And after some research modified this line it from this: 经过一些研究修改了这一行,它是这样的:

SET !VAR1 EVAL("var a=\"{{!EXTRACT}}\"; var b=a.indexOf(\"total\"); var c=parseFloat(a.substring((b+9),(b+9+3))); c")

to this: 对此:

SET !VAR1 EVAL(\"var a=\'{{!EXTRACT}}\'; var b=a.indexOf(\"total\"); var c=parseFloat(a.substring((b+9),(b+9+3))); c\)

And then I get this error: 然后我得到这个错误:

wrong format of SET command, line 9 (Error code: 910) SET命令的格式错误,第9行(错误代码:910)

Any ideas on how I could get this working? 关于如何使它起作用的任何想法? I also tried to launch the .iim file from a .js file and loop it from there, but then the !LOOP is always 1 and it always reads the first line of the csv.. so it's pretty useless. 我还尝试从.js文件启动.iim文件并从那里循环播放,但是!LOOP始终为1,并且始终读取csv的第一行。因此,它非常没用。

Thanks a lot! 非常感谢!

以这种方式尝试:

extract +=  'SET !VAR1 EVAL("var a=\'{{!EXTRACT}}\'; var b=a.indexOf(\'total\'); var c=parseFloat(a.substring((b+9),(b+9+3))); c")' + "\n";

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM