1

Firefox 用の imacros 無料プラグインを使用して、Web サイトの JavaScript 検索フォームからデータをスクレイピングしています。これは、1 セットの結果を抽出するために機能する現在のマクロの内訳です。

以下のマクロの部分は、キーワード「スーパーマン」を検索フォームに自動的に入力します。

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

選択した製品の名前と価格でフォームがリロードされ、次の 2 つの 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

ループを使用して、これらの結果を 1 つずつ選択し、名前と価格を抽出してから、リストに戻って次の結果を選択するなどを行います。ワイルドカード (*) 記号と {{!LOOP}} ステートメントを使用する必要があると思いますが、これらをコードに実装する方法や Javascript を使用する必要があるかどうかはわかりません。

助けてくれてありがとう

4

1 に答える 1