1

我正在使用 imacros 免费插件 for firefox 从网站上的 javascript 搜索表单中抓取数据。这是我当前宏的细分,它可以为我提取一组结果。

下面的宏部分自动将关键字“超人”输入到搜索表单中。

VERSION BUILD=8300326 RECORDER=FX
TAB T=1
URL GOTO=http://www.example.com/pricelist
FRAME F=1
TAG POS=1 TYPE=INPUT:TEXT FORM=ACTION:/Pricelistsearchform/ ATTR=ID:Keyphrase CONTENT=superman
TAG POS=1 TYPE=INPUT:SUBMIT FORM=ACTION:/Pricelistsearchform ATTR=NAME:SearchBarcode&&VALUE:Get<SP>Value

然后将加载结果列表。我现在使用以下 xpath 表达式来选择出现在列表中的第一个结果:

TAG XPATH=id('SearchForm')/form/fieldset/table/tbody/tr[3]/td[1]/a

表单现在重新加载所选产品的名称和价格,我使用这两个 XPATH 表达式来提取此数据:

TAG XPATH=id('Results')/table/tbody/tr[2]/td[2] EXTRACT=TXT
TAG XPATH=id('Results')/table/tbody/tr[2]/td[4] EXTRACT=TXT
BACK

然后我使用 BACK 语句将我带回到我的结果列表。

这一切都可以很好地提取列表中的第一个结果,即“超人”。然而,还有很多其他的结果我想循环和抓取(超人 2、超人 3、超人特别版等)。多个结果按以下格式列出:

TAG XPATH=id('SearchForm')/form/fieldset/table/tbody/tr[3]/td[1]/a   ..i.e superman
TAG XPATH=id('SearchForm')/form/fieldset/table/tbody/tr[4]/td[1]/a   ..i.e superman 2
TAG XPATH=id('SearchForm')/form/fieldset/table/tbody/tr[5]/td[1]/a   ..i.e superman 3 ...etc

我想使用一个循环一次选择每个结果,提取它们的名称和价格,然后返回并选择列表中的下一个结果,依此类推。我假设我需要使用通配符 (*) 符号和 {{!LOOP}} 语句,但我不确定如何在我的代码中实现这些或者我是否需要使用 Javascript。

非常感谢您的帮助

4

1 回答 1

1

试试这个

set !loop 3
TAG XPATH=id('SearchForm')/form/fieldset/table/tbody/tr[{{!loop}}]/td[1]/a

或简单

set !loop 3
tag pos={{!loop}} type=a attr=id:SearchForm extract=txt
于 2013-05-13T21:47:44.523 回答