出乎意料的是,每个其他值都在循环中保存两次

时间:2014-07-16 21:34:14

标签: scrape imacros

我试图从网站上提取物品的价格,提取这些值并将其保存为CSV,所有这些都使用iMacros。

我成功创建了一个循环提取和保存宏,但是我收到了意想不到的结果。每个秒的值都会在生成的CSV文件中保存两次。

我的宏代码如下:

  VERSION BUILD=10022823
    TAB T=1
    TAB CLOSEALLOTHERS
    SET !ERRORIGNORE YES
    SET !LOOP 1
    SET !DATASOURCE C:\Users\UserName\Documents\URL_List.csv
    SET !DATASOURCE_COLUMNS 1
    SET !DATASOURCE_LINE {{!LOOP}}
    URL GOTO={{!COL1}}
    SET !TIMEOUT_STEP 10
    TAG POS=1 TYPE=DIV ATTR=CLASS:preis EXTRACT=TXT
    SAVEAS TYPE=EXTRACT FOLDER=* FILE=Extracted_prices.csv

我的预期结果是:

$99.99
$89.99
$16.99

我得到的是:

$99.99 
$99.99
89.99 
$16.99 
$16.99

我不能为我的生活找出为什么会发生这种行为。我查阅了iMacros Wiki上的可用文档但无济于事。这里有很多关于stackoverflow的问题,它们解决了数据抓取和提取宏的创建问题,其中很多都是我在创建上述宏时所参考的。然而,我无法找到遇到同样困难的人。我还检查了我的CSV文件的完整性,以确保它的创建没有任何错误,但我无法找到任何违规行为。我只是错过了一些简单的东西吗?

3 个答案:

答案 0 :(得分:1)

 VERSION BUILD=10022823
    TAB T=1
    TAB CLOSEALLOTHERS
    SET !ERRORIGNORE YES
    SET !LOOP 1
    SET !DATASOURCE C:\Users\UserName\Documents\URL_List.csv
    SET !DATASOURCE_COLUMNS 1
    SET !DATASOURCE_LINE {{!LOOP}}
    URL GOTO={{!COL1}}
    SET !TIMEOUT_STEP 10
    TAG POS=1 TYPE=DIV ATTR=CLASS:preis EXTRACT=TXT
    SAVEAS TYPE=EXTRACT FOLDER=* FILE=Extracted_prices.csv
    SET !EXTRACT NULL

也许你应该清除Extract变量的值。

答案 1 :(得分:0)

如果我的评论被清理干净,我会发布不太充分的“回答”。

玩完这个宏并拔出我的头发几个小时后,我从Internet Explorer扩展切换到Firefox和violà的iMacros扩展,一切都按预期工作。但是,在尝试运行后我收到Error code -1001后运行宏。显然,当!DATASOURCE中引用的CSV文件编码不正确时,会导致此错误。显然,CSV文件必须使用UTF-8编码保存。

这可能是一个很长的镜头,但我在IE扩展中收到的意外结果可能与编码有关。编辑:快速测试导致IE扩展的输出相同,即使将源CSV编码为UTF-8。

希望这对一些可怜的灵魂有所帮助!

答案 2 :(得分:0)

我通过在每个循环后添加延迟来解决此问题:

VERSION BUILD=10022823

TAB T=1
TAB CLOSEALLOTHERS

SET !ERRORIGNORE YES
SET !LOOP 1
SET !DATASOURCE C:\Users\UserName\Documents\URL_List.csv
SET !DATASOURCE_COLUMNS 1
SET !DATASOURCE_LINE {{!LOOP}}

URL GOTO={{!COL1}}

'Wait 5 seconds before extracting
WAIT SECONDS=5

SET !TIMEOUT_STEP 10

TAG POS=1 TYPE=DIV ATTR=CLASS:preis EXTRACT=TXT
SAVEAS TYPE=EXTRACT FOLDER=* FILE=Extracted_prices.csv

有关WAIT命令的更多信息,请参见here