如何防止"项目中的行不存在"出现在EXTRACT csv中?

时间:2016-03-07 08:06:02

标签: web-scraping imacros

操作系统: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中?看起来像什么条件?谢谢。

2 个答案:

答案 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");
        };