【问题标题】:Using SET !VAR1 EVAL in javascript iMacros在 javascript iMacros 中使用 SET !VAR1 EVAL
【发布时间】:2015-10-17 10:52:58
【问题描述】:

我有一个用于从网站提取文本的 .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

它在播放(循环)模式下运行良好,但需要作为循环自动运行,自动从 shell 脚本启动它。作为一个普通的 .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);

}

我收到此错误:

语法错误:缺失; before 语句,第 23 行(错误代码:-991)

经过一些研究修改了这条线:

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

到这里:

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

然后我得到这个错误:

SET 命令格式错误,第 9 行(错误代码:910)

关于如何让这个工作的任何想法?我还尝试从 .js 文件启动 .iim 文件并从那里循环,但是 !LOOP 始终为 1 并且它始终读取 csv 的第一行.. 所以它非常没用。

非常感谢!

【问题讨论】:

    标签: javascript imacros data-extraction


    【解决方案1】:

    这样试试:

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

    【讨论】:

    • 哇!极好的!你只是把所有的 " 改成 '.. 为什么会这样?它是 iMacros 上的一个错误还是应该这样写?
    • 这就是使用‘iMacros’ + JavaScript 来处理字符串符号的规则。你也可以这样写:extract += "SET !VAR1 EVAL(\"var a='{{!EXTRACT}}'; var b=a.indexOf('total'); var c=parseFloat(a.substring((b+9),(b+9+3))); c\")" + "\n";.
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-15
    • 1970-01-01
    相关资源
    最近更新 更多