複数のページからデータを抽出する

Sunday, April 08, 2018 7:54 AM

多くのWebサイトはページネーションを使って、コンテンツをロードします。たとえば、Eコマースサイトの商品リストは、1枚ページではなく、複数のページに分かれて置かれています。ですから、複数のページからデータを抽出するには、ページネーションの移動を設定しなければなりません。

このチュートリアルでは、2つのページネーションのケースについて説明します。

1) 「Next」ボタンを使って複数のページを抽出する

2) 「Next」ボタンなしで複数のページを抽出する

 

 

 

 

 

1) 「Next」ボタンを使って複数のページを抽出する

(例のURL: https://www.yelp.com/search?cflt=hotels&find_loc=San+Francisco%2C+CA )

 

  • 対象ページが読み込まれたら、「Next」ボタンを見つけてクリックします。
  • 「Action Tips」から「Loop click next page」を選択します。

 

ワークフローで「Click to paginate」ステップが自動的に生成されます。

 

(タスクの作りを続くには、 リストの内容を抽出する方法  と 各アイテムのページからデータを抽出する方法 をご参照ください。)

 

ヒント!

ページ単位のコンテンツがAJAXを介して読み込まれる場合は、「Click to paginate」ステップに2〜4秒のAJAXタイムアウトを設定します。AJAXつ使っていない場合は、AJAXタイムアウトを設定しないでください。

AJAXの詳細を見る

 

 

 

 

 

 

2) 「Next」ボタンなしで複数のページを抽出する

時には「Next」ボタンがなく、次のようなページ番号のリンクだけがあります:

 

この場合、「Click to paginate」アクションのXPathを変更する必要があります。

 

(例のURL:http://www.enzolifesciences.com/product-listing/?product_type=Antibodies&application=&text)

 

 

ヒント!

ループでページ番号 「1」を選択したため、自動生成したページネーションループは正しく機能しません。現在の設定では、Octoparseは次のページに移動しようとすると「1」をクリックし続け、重複したデータが無限に抽出されます。

 

ですから、このタイプのページネーションを扱う際の重要な部分は、「Click to paginate」のXPathを変更することです。

ここでよく使われるXPath構文は、カレントノードの後ろにあるすべての兄弟を選択する「following-sibling」です。

たとえば、1番目ページにいるときは、ページ番号「2」をクリックしてページ2に、次にページ3に移動します。

 

1) これを行うには、まず選択したページ番号のXPathを見つける

ソースコードを調べて、選択したページ番号のコードを探します(ページ番号「1」を右クリックし、「Inspect Source Code」などのコマンドを選択することによって見つけます)。下の例では、ページ1のノードコードは<li class="nav-pageitem selected">です。

ですから、そのXPathは次のようになります。

.//*[@class="nav-pageitem selected"]

 

2) XPath構文「following-sibling」を使って2番目のページのノードを選択する

ノードコード「li」の後ろ最初の「li」タグ内に2番目のページがあるので、正しいXPathは次のようになります。

.//*[@class="nav-pageitem selected"]/following-sibling::li[1]

 

3) 2番目のページに移動するには、「a」タグ内のリンクをクリックする必要がある

それでは、完全なXPathを手に入れます:

.//*[@class="nav-pageitem selected"]/following-sibling::li[1]/a

 

4) 「Pagination」ループに自動生成XPathを新しいXPathに置き換える

  • 「Pagination」ループをクリックして、右側の「Single element」に新しいXPathをテ入力します。

 

5) XPathをもう一度チェックして、他のページでも動作することを確認してください。

  • ページネーションループをクリックします。
  • 「Click to paginate」アクションをクリックします。
  • Webページが次のページに移動したかどうかを確認します。
  • より多くのページに上記の手順を繰り返します。

 

 

ヒント!

XPathは、Webページ上の特定の要素を見つけるために使用されますが、Webページのソースコードに基づいています。ですから、この例で書いたXPathは他のWebサイトに適用されませんが、XPathの書く方法を常に適用できます。

 

 

関連記事:

XPathで要素を見つける  

無限スクロールでの読み込み  

AJAXを扱う方法  

 

 

btn_sidebar_use.png