Firefox 用の imacros 無料プラグインを使用して、Web サイトの 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 ファイルを使用して名前を一度に 1 つずつ検索フィールドに自動的に入力し、ループしてすべての結果を通常どおり抽出したいと思います。
たとえば、次のような csv ファイルがある場合: スーパーマン、スーパーマン 2、スーパーマン 3... など マクロで検索フォームに「スーパーマン」と入力し、すべての結果をループして抽出します。次に「superman 2」と入力し、すべての結果を抽出します...
以下の例では、!DATASOURCE コマンドを使用して既に実験を行っていますが、成功していません。以下の例では 2 つのループがあるため、マクロを 2 つの別々のマクロに分割する必要があるかどうか、またはこれを 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
助けてくれてありがとう