我正在尝试从网站上抓取商品的价格,提取这些值并将它们保存到 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 文件的完整性,以确保其创建过程中没有任何错误,但我无法发现任何违规行为。我只是错过了一些很简单的事情吗?
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 变量的值。
如果我的评论被清理,我将发布我不够充分的“答案”。
在玩弄这个宏并拔掉头发几个小时后,我从 Internet Explorer 扩展切换到 Firefox et violà 的 iMacros 扩展,一切都按预期工作。然而,运行宏后,我在尝试运行时收到了
Error code -1001
。显然,此错误是由于 !DATASOURCE
中引用的 CSV 文件编码不正确而引起的。 CSV 文件显然必须使用 UTF-8 编码保存。
这可能是一个远景,但我在 IE 扩展中收到的意外结果可能与编码有关。 编辑:即使在对源 CSV 进行编码之后,快速测试也会从 IE 扩展中产生相同的输出作为 UTF-8。
希望这可以帮助一些可怜的灵魂!
我通过在每个循环后添加延迟来解决这个问题:
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
命令的更多信息可以在此处找到。