我正在使用 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
现在加载结果列表,我使用以下代码循环遍历每个结果并提取结果:
SET !LOOP 3
TAG XPATH=id('SearchForm')/form/fieldset/table/tbody/tr[{{!LOOP}}]/td[1]/a
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
我想修改代码以使用 csv 文件一次自动将名称输入到搜索字段中,然后像往常一样循环并提取所有结果。
例如,如果我有一个看起来像这样的 csv 文件:超人、超人 2、超人 3...等等,我希望宏在搜索表单中输入“超人”,遍历所有结果并提取它们。然后它应该输入“超人2”并提取所有结果等等......
我已经在下面的示例中使用 !DATASOURCE 命令进行了实验,但没有成功。我不确定是否需要将宏拆分为两个单独的宏,因为我在下面的示例中有两个循环,或者这是否可以通过 javascript 实现。
VERSION BUILD=8300326 RECORDER=FX
TAB T=1
SET !DATASOURCE titlelist.csv
SET !DATASOURCE_LINE {{!LOOP}
URL GOTO=http://www.example.com/pricelist
FRAME F=1
TAG POS=1 TYPE=INPUT:TEXT FORM=ACTION:/Pricelistsearchform/ ATTR=ID:Keyphrase CONTENT={{!COL1}}
TAG POS=1 TYPE=INPUT:SUBMIT FORM=ACTION:/Pricelistsearchform ATTR=NAME:SearchBarcode&&VALUE:Get<SP>Value
SET !LOOP 3
TAG XPATH=id('SearchForm')/form/fieldset/table/tbody/tr[{{!LOOP}}]/td[1]/a
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
非常感谢您的帮助