iMacros是我经常用来自动SEO的工具,比如添加到收藏夹,我的站有几万个页面,一个一个的添加累死也添加不完,当然可以用用批量导入导出的方法,不过用iMacros也有它的好处,比如把页面导入到Excil再用Imacros自动收藏。还可以用它来自动提交文章到文章站。
iMacros 简单的说就是一个基于浏览器(firefox,ie,chrome)的录宏(Macros)回放扩展(extension),利用它可以模拟任何人工的点击,除了手工录制,它 还提供一套简单的脚本,还有 javascript,vbscript 等接口(API)方便进行复杂的逻辑控制。
iMacros如何自动提交至js脚本生成的文本框
用iMacros提交文本框特别方便,但如果要提交的是JS生成的框就非常不方便了,不过用下边的方法可以解决。
先说一个错误的不成功的方法。
DS CMD=MOVETO X=400 Y=950 CONTENT=AAAA
后来上官方网上看了看,如果看不懂,可以先看下边的基础教程。
网页上也说了,别的方法都不可行的时候,可以试试这个(DirectScreen (DS) Technology is the ultimate solution if everything
else fails! It simulates standard native mouse clicks within the browser window. It is activated during recording by clicking on the “Click Mode” button and selecting “Use DirectScreen Commands” from the dialog.
Typically DirectScreen Technology is used to automate web pages that contain non-HTML elements such asJava applets, Adobe Flash, Adobe Flex, Microsoft Silverlight or ActiveX controls. It also automates even the most complicatedAJAXbased website. http://wiki.imacros.net/DS):
DS CMD=CLICK X=100 Y=200 CONTENT=CCCC
又把csv导进去,也可以!
JS调用imacros所用到的函数
一、iimPlay() : 调用一个iim脚本。
完整调用方法为 : int ret_code = iimPlay ( String macro [, int timeout] ) ,返回值ret_code为1时说明iim被正确调用。小于0则说明执行脚本时出现了错误,
履行 iMacros 的脚本语句,语句可以是一段,必须以 CODE: 起头,行间要用 “\n” 分隔,返回值为负数代表履行有错
二、iimSet() :设置自定义变量
语法为:int ret_code = iimSet ( String -var_VARNAME, String VARVALUE )
最主要的就是上面两个,还可以了解一下
iimDisplay(msg) :以独立对话框形式显示一个消息
string=iimGetLastExtract([n]) : 返回第n此从页面里通过Extract得到的数据
iimGetLastError() 返回最近差错对应的差错信息(字符串)
Tag 未找到时会默认会等候 !TIMEOUT /10 这么常光阴,默认值就是 6 秒
主要了解:1.imacros变量 2.Js调用所用到的函数iimSet()、iimDisplay() 3.调用CSV文件
imacros简单的说就是能记录你在网页中的动作,然后模拟你的动作自动重复执行。进阶应用主要在于两个方面:
1.用JS动态调用,重复执行。
2.可以调用CSV文件。
听说还可以调用数据库,这个应该很少用,用途不大。
安装和火狐一般安装方法一样,不会装火狐插件的百度一下,安装完成后在浏览器菜单栏上找到imacros的按钮,点击将在浏览器左边出现它的工作界面,其工作界面当然也就三部分:
1.运行:(可以运行所存在的宏,不解释)
2.记录:(点记录即可记录你在网页中的动作,按停止即可自动保存为当前宏)
3.编辑:(可以对存储的宏进一步编辑,更适合你的用途)
imacros变量
分为系统内定变量 和用户自定义变量
一、系统内定变量
系统内定变量中有三个特殊的变量:VAR1 VAR2 VAR3 可以赋予任何值。
常见的系统内见变量:
SET !VAR1 helloworld
设定!VAR1为 hello world (ps: 代表空格
代表回车)
SET !TIMEOUT 25 宏超时值
PROMPT Pleaseentertext !VAR1
弹出一个输入框,你在输入框中输入的内容将传到!VAR1中。
二、用户自定义变量 : 用户外部传入的变量
iimSet(“myurl”,”www.it2168.com”)
调用变量时用{{myurl}}
JS调用imacros所用到的函数
一、iimPlay() : 调用一个iim脚本。
完整调用方法为 : int ret_code = iimPlay ( String macro [, int timeout] ) ,返回值ret_code为1时说明iim被正确调用。小于0则说明执行脚本时出现了错误,
履行 iMacros 的脚本语句,语句可以是一段,必须以 CODE: 起头,行间要用 “\n” 分隔,返回值为负数代表履行有错
二、iimSet() :设置自定义变量
语法为:int ret_code = iimSet ( String -var_VARNAME, String VARVALUE )
最主要的就是上面两个,还可以了解一下
iimDisplay(msg) :以独立对话框形式显示一个消息
string=iimGetLastExtract([n]) : 返回第n此从页面里通过Extract得到的数据
iimGetLastError() 返回最近差错对应的差错信息(字符串)
Tag 未找到时会默认会等候 !TIMEOUT /10 这么常光阴,默认值就是 6 秒
调用csv文件
CMDLINE !DATASOURCE it2168.csv
SET !DATASOURCE_COLUMNS 8
SET !LOOP 2
SET !DATASOURCE_LINE {{!LOOP}}
SET !DATASOURCE it2168.csv (内置的变量!DATASOURCE)
SET !DATASOURCE_COLUMNS 8 (选择好数据源文件后我们需要告诉iMacrosCSV文件有多少列。用!DATASOURCE_COLUMNS变量设置)
SET !LOOP 2
SET !DATASOURCE_LINE {{!LOOP}} (既然我们要插入的所有数据集,我们需要的宏循环来控制。ps:loop就是脚本循环的次数,还记得play loop那个循环运行按钮么,这个内建变量是用来设置读取文件的第几行。)
现在,我们已经把准备工作都做好了。接下来我们要读取出对应的数据。
TAG TYPE=INPUT:TEXT FORM=Listing ATTR=NAME:Name CONTENT={{!COL1}}
TAG TYPE=INPUT:TEXT FORM=Listing ATTR=NAME:Album CONTENT={{!COL2}}
TAG TYPE=INPUT:TEXT FORM=Listing ATTR=NAME:Price CONTENT={{!COL3}}
{{!COL1}} 代表的是读取出对应的第一列数据
常用指令
REFRESH 用来刷新页面
WAIT SECONDES=3 等候 3 秒
ONDIALOG POS=1 BUTTON=CANCEL CONTENT= 看到弹出窗口后点 Cancel
URL GOTO=http://www.g.cn 转到网址 www.g.cn
TAB T=1 转到第一个标签页
VERSION BUILD=6700624 RECORDER=FX
版本号
TAG POS=1 TYPE=td ATTR=align:center EXTRACT=TXT
POS=地位 页面提取内容 TYPE=标签 ATTR=标签对用的属性:值 EXTRACRT=TXT 提取文字
SET !VAR {{!EXTRACT}} 提取内容在EXTRACT里,复制到var
SET !TIMEOUT 25 超时光阴设值
SET !REPLAYSPEED FAST 用来设定回放速度为最快,即履行语句中间不等候
SET !ERRORIGNORE YES 用来漠视差错
一,基本操作
1创建变量
有三个特殊的内置变量, !VAR1 , !VAR2和!VAR3。这些变量可以设置为任何你自定义的值。
例如:
SET !VAR1 helloworld
设定!VAR1为 helloworld (ps: 代表空格
代表回车)
PROMPT Pleaseentertext !VAR1
弹出一个输入框,你在输入框中输入的内容将传到!VAR1中。
用户定义的变量:
自定义变量是用户在外部控制时传入的变量。例如在Visual Basic脚本示例这将如下所示:
iret = imacros.iimSet(“-var_ITEM”, “15″)(ps:有时候也可以这样设置:iimSet(“ITEM”, “15″),设置变量ITEM)
在调用的地方使用{{ITEM}}替换要代替的数值。
iMacros让您指定文本文件, CSV文件作为输入。
例如这样一个csv文件:
“ARTIST” , “ALBUM TITLE” , “PRICE”
“Beatles”, “Abbey Road”, “13.49″
“Beatles”, “The Beatles 1,2,3″ , “25.49″
“Mozart” , “Symphonies No.40 & 41″, “9.98″
“Mozart”, “Requiem”, “7.50″
这个文件的文件名为OnlineAuction.csv
我们现在需要告诉iMacros宏如何找到这个数据输入文件。为此,我们使用内置的变量!DATASOURCE
SET !DATASOURCE OnlineAuction.csv
如果您不使用任何路径信息DataSource的路径默认定位在标准数据源的目录,可在选项对话框中指定这个路径。默认路径是iMacros数据路径下的 datasources文件夹。
选择好数据源文件后我们需要告诉iMacrosCSV文件有多少列。我们用!DATASOURCE_COLUMNS变量设置:
SET !DATASOURCE_COLUMNS 3
此数字必须完全匹配输入文件的列数
既然我们要插入的所有数据集,我们需要的宏循环来控制。
SET !DATASOURCE_LINE {{!LOOP}} (ps:loop就是脚本循环的次数,还记得play loop那个循环运行按钮么~~)
这个内建变量是用来设置读取文件的第几行。
现在,我们已经把准备工作都做好了。接下来我们要读取出对应的数据。
TAG TYPE=INPUT:TEXT FORM=Listing ATTR=NAME:Name CONTENT={{!COL1}}
TAG TYPE=INPUT:TEXT FORM=Listing ATTR=NAME:Album CONTENT={{!COL2}}
TAG TYPE=INPUT:TEXT FORM=Listing ATTR=NAME:Price CONTENT={{!COL3}}
{{!COL1}} 代表的是读取出对应的第一列数据
te> te>
常用有特殊意义的系统变量,用来设置一些属性
SET !TIMEOUT 33 超时时间设值
SET !REPLAYSPEED FAST 用来设定回放速度为最快,即执行语句中间不等待
SET !ERRORIGNORE YES 用来忽略错误
2常用指令:
REFRESH 用来刷新页面
WAIT SECONDES=3 等待 3 秒
ONDIALOG POS=1 BUTTON=CANCEL CONTENT= 看到弹出窗口后点 Cancel
URL GOTO=http://www.g.cn 转到网址 www.g.cn
TAB T=1 转到第一个标签页
VERSION BUILD=6700624 RECORDER=FX
TAB T=1
TAG POS=1 TYPE=td ATTR=align:center EXTRACT=TXT POS=位置 页面提取内容 TYPE=标签 ATTR=标签对用的属性:值 EXTRACRT=TXT 提取文字
SET !VAR {{!EXTRACT}} 提取内容在EXTRACT里,复制到var
二, 高级操作
写 js 用到的接口:
iimPlay(“CODE:…”)执行 iMacros 的脚本语句,语句可以是一段,必须以 CODE: 开始,行间要用 “\n” 分隔,返回值为负数代表执行有错
iimGetLastError() 返回最近错误对应的错误信息(字符串)
iimDisplay(msg) 以独立对话框形式显示一个消息
SET 语句只在一个 CODE: 块中有效
Tag 未找到时会默认会等待 !TIMEOUT /10 这么长时间,默认值就是 6 秒
不 支持使用 document.getElementById() 来判断 tag 是否存在
string=iimGetLastExtract([n]); 返回第n此从页面里通过Extract得到的数据
通常上述内容就够用了(最多还却写技巧)当然至少你要会一点 javas cript,就可以做出自动的机器人,虽然偷菜不太可能,但是好友买卖自动化是毫无难度的
下面再介绍一些imacros的教程
这些教程我都看过,非常有用,我正在好好研究,我已经写了几个代码并且批量运行了。哈哈。
iMacros与js
当你已经初步学会了如何使用iMacros后,为了实现更加复杂的操作,可以尝试使用用js来调用iMacros。
你可以在脚本中重命名一个.js后缀的脚本,之后运行该脚本将以js方式调用。你也可以从外部载入一个js脚本,使用记录-载入或直接复制脚本到 iMacros的Datasources目录
第一次使用js调用iMacros脚本
首先录制一个简单的脚本google.iim
VERSION BUILD=6111213 RECORDER=FX
‘作者zymaxs
TAB T=1
URL GOTO=http://www.google.cn/
TAG POS=1 TYPE=INPUT:TEXT FORM=NAME:f ATTR=NAME:q CONTENT=iMacros
TAG POS=1 TYPE=INPUT:SUBMIT FORM=NAME:f ATTR=NAME:btnG&&VALUE:Google搜索
录制完成后,再导入一个空文件,文件名为google.js。
编辑google.js:
iimPlay(“google”);
确定保存,然后运行这个文件
运行刚刚的js我们发现,使用iimPlay可以方便的调用一个iim脚本。
iimPlay的完整调用方法为
int ret_code = iimPlay ( String macro [, int timeout] )(备注:作者没有发现timeout的具体作用)
返回值ret_code为1时说明iim被正确调用。小于0则说明执行脚本时出现了错误
如何调用外部参数
在很多情况下,我们希望最终运行时输入的数据并不是录制的数据,而是需要自定义可修改的。
要达到这个使用目的可以使用iimSet()设置自定义变量-var_varname,然后在脚本中调用这个参数。
int ret_code = iimSet ( String -var_VARNAME, String VARVALUE )‏
调用示例
修改google.js:
iimSet (“-var_search”,”imacros”)‏
iimPlay(“google”);
修改google.iim中:
CONTENT=Imacros 为CONTENT={{search}}
再次运行google.js
发现了吗,搜索传入的参数可以通过这种方式任意修改。
在运行过程输入值
有些时候你不能在运行前确定脚本中的一个值,需要在运行中手动输入,这时候需要对iim脚本做修改:
PROMPT 输入验证码 !VAR1
运行时会跳出一个输入框让你输入数据
然后使用{{!VAR1}}调用数据
保存结果页面
有时候我们希望在运行脚本的过程中可以把一些重要的页面记录下来,这时候我们可以在iim脚本中使用:
SAVEAS TYPE=MHT FOLDER=* FILE=pagename
这句意味着保存当前页为mht格式,保存到iMacros的download文件夹中
页面响应时间记录
在做一些页面的测试时,我们需要记录页面的响应时间以便进行分析。
iMacros提供可以用csv格式保存页面响应时间,对应iim脚本:
STOPWATCH ID=id
‘做一些页面操作
STOPWATCH ID=id