操作系统:Windows 8.1 64位iMacros 10.0.2
美好的一天,我的数据源是.csv,其中包含我用于在网站中搜索的术语。搜索结果是单个页面,具体取决于搜索词。碰巧的是,对于某些搜索术语,没有单独的页面,我搜索的网站显示存在" 0项目"信息。 iMacros仍然根据其标签定位提取数据,并且" 0项目的DOM结构存在"页面或获取#EANF#,如果它没有在页面上找到标记匹配。然后,iMacros将提取的内容保存在提取csv的一行中。我希望从CODE中排除:SELECT ALL SAVEAS TYPE = EXTRACT .csv属于" 0项的行存在"网页(换句话说,我提取的CSV只显示从网站上提取的完整数据)
问题:如何防止"项目中的行不存在"出现在EXTRACT csv中?看起来像什么条件?谢谢。
答案 0 :(得分:1)
您可以尝试以下解决方法:
SET csvFolder EVAL("('{{!EXTRACT}}'.match(/#EANF#/)) ? 'noSuchFolder' : '*';")
SET !ERRORIGNORE YES
SAVEAS TYPE=EXTRACT FOLDER={{csvFolder}} FILE=extracts.csv
SET !ERRORIGNORE NO
答案 1 :(得分:0)
您也可以使用JavaScript执行此操作。如果搜索与下面的代码不匹配,则会在csv中写入“Search not matched”,否则会写入搜索文本
iimPlay("CODE:TAG POS=1 TYPE=P ATTR=CLASS:****** EXTRACT=TXT\n"); //here you need to mention your extract tag
var tmp = iimGetLastExtract().trim();
if(tmp.indexOf("EANF")!= -1)
{
var Val1='Search not matched';
iimSet("Val1",Val1);
iimPlay("CODE:ADD !EXTRACT {{Val1}}\n SAVEAS TYPE=EXTRACT FOLDER=* FILE=Searchextract.csv");
}
else
{
iimSet("tmp",tmp);
iimPlay("CODE:ADD !EXTRACT {{tmp}}\n SAVEAS TYPE=EXTRACT FOLDER=* FILE=Searchextract.csv");
};
如果您只想存储搜索文本,请尝试以下代码
iimPlay("CODE:TAG POS=1 TYPE=P ATTR=CLASS:****** EXTRACT=TXT\n"); //here you need to mention your extract tag
var tmp = iimGetLastExtract().trim();
if(tmp.indexOf("EANF")== -1)
{
iimSet("tmp",tmp);
iimPlay("CODE:ADD !EXTRACT {{tmp}}\n SAVEAS TYPE=EXTRACT FOLDER=* FILE=Searchextract.csv");
};