2013-05-13 37 views
1

我使用的是用於Firefox的imacros免費插件從網站上的JavaScript搜索表單中刮取數據。這裏是我當前宏的一個細分,它爲我提取一組結果。imacros firefox循環通過結果和提取

宏下面的部分自動將關鍵字「超人」輸入到搜索表單中。

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,超人特別版e.t.c)。多重結果列於以下格式:

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。

的幫助

回答

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 
+0

感謝這個偉大的工程! – 2013-05-19 08:31:27