ある場合、あらかじめ同じ構造のURLリスト(例:商品URLの一括など)を用意していることがあります。そんな時、URLリストから直接データを抽出するのが簡単かつ強力な方法です。このチュートリアルでは、URLリストを使って複数のウェブページからデータを抽出する方法を紹介します。
URLリストを使ったスクレイピングでは、抽出が必要なURLをループさせ、その後にデータ抽出アクションを設定するだけです。OctoparseはURLを1つずつ読み込み、各ページからデータをスクレイピングします。
「URLリストループ」モードを使うことで、Octoparseは「次のページをクリック」や「商品をクリックして商品ページに入る」といった余分なステップの処理が不要になります。その結果、抽出速度は大幅に向上します。特にクラウド抽出の場合が顕著です。 URLリストを使ってスクレイピングを高速化する方法 をチェックしてください。
URLリストからデータを抽出するプロセスは、基本的に以下の3ステップに分けられます:
詳細な手順は以下のリンクをご参照ください:
今回は、Octoparseで「URLリストループ」を作成する2つの方法についてご説明します。
どんな場合にURLリストを使ってデータを抽出するのか?
URLリストから直接抽出タスクを開始できる場合を以下に示します。
URLリストのすべてが同じドメイン内で、同じページ構造を共有している場合が最も適しています。
例えば、商品のURLリストがあって、定期的に価格データをスクレイピングしたい場合です。
無限スクロールや「もっと見る」ボタンを使っているサイトの場合、各URLをクリックして詳細ページをスクレイピングする必要があるため、2つのタスクに分ける必要があります。1つはリストページをスクロールしてURLを収集し、もう1つは収集したURLリストを使って詳細データをスクレイピングする、という具合です。
例えば、Zaraの検索結果ページは無限スクロールで商品を読み込んでいます。必要なデータが商品ページにある場合、スクロール回数を設定して商品URLを収集し、次のタスクで使用する必要があります。
AJAX読み込みを使用しているサイトの場合、1つ目の商品ページをクリック後、自動的にリストページに戻れないので、まず詳細ページのURLを抽出し、そのURLリストでデータ収集を行う必要があります。
ページネーションが遅いサイトの場合、スケジュールタスクのスクレイピング効率を上げるため、ページURLを直接ループする方が良い場合があります。
注意:ページ構造が同じかどうかを判断するには?
特定のウェブサイトからニュース記事をスクレイピングする場合、記事ページは通常、以下のように同じページ構造を共有しています。
別の例として、Googleマップの事業者ページがあります。事業者ページはすべて同じ構造になっています。
方法1. URLリストからタスクを開始する
1). [+新規作成]を選択し、[カスタマイズタスク]をクリックして新しいタスクを作成します。
2). URLリストをURLプレビューボックスにペーストし、[保存]をクリックします。
[保存]をクリックすると、自動的にワークフローにURLループアクション(URLリストの各URLをループする)が作成されます。[URLループ]をクリックすると、入力したURLがループアイテムに追加されているのが確認できます。
方法2. ワークフローで「URLリストループ」を作成する
ワークフローにループアイテムを追加します。
[ループモード]で[URLリスト]を選択します。編集ボタンをクリックしてURLリストをペーストします。設定を保存するために[保存]をクリックし忘れないでください。
ループアイテム内にWebページを開くを追加し、[ループ内のURLを開く]にチェックを入れて[保存]で確定します。
ご注意:抽出を開始したらすぐに停止する場合は、Webページを開くテップのタイムアウト時間を長くすることをお試しください。そうすることで、ページが完全にロードされるまでシステムが待機する時間が長くなります。
方法3. ページからデータを抽出する
URLが保存されると、最初のページが自動的に開き、ページ上のデータを選択して抽出できるようになります。
注意点:
Octoparseが速すぎる場合、データを抽出ステップが実行される前にページが完全にロードされないことがあり、データが全く抽出されない、または不完全なデータしか抽出されない可能性があります。これを回避するには、「実行前に数秒を待機」を設定できます。
「データを抽出」ステップの「詳細設定」でアクションが実行されるまでの待ち時間を設定してください(通常2-3秒が適切です)。
2. 入力した元のURLリストと行をそろえてデータをエクスポートしたい場合は、現在のページURLをここに追加できます:
上記のプロセスが終わると、タスクを実行すると1つのウェブサイトのスクレイピングが完了するたびに、Octoparseは次のページに自動的に移動します。
よくある質問
1. 同じページレイアウトを共有していないURLを使用できますか?
残念ながら、「URLリスト」を使って抽出できるのは、同じページ構造を共有しているURLのみです。データを一貫して正確に抽出するためには、これらのページが同じページレイアウトを共有している必要があります。
「URLリスト」モードの詳細は、以下の記事をご確認ください: ループアイテム
2. 追加できるURLの数に制限はありますか?
はい。Octoparseに直接URLをペーストで入力する場合、1万件までの追加をおすすめします。ただし、URLを一括で入力する機能を使えば、最大100万件のURLを入力できます。
3. Octoparseで自動的にURLを収集して追加することはできますか?
Octoparseでは、別のタスクからURLを入力することができます。あるタスクでURLを抽出し、別のタスクでそのURLを使う、といった設定が可能です。
また、Octoparse APIを使えば、アプリにアクセスせずにURLリストを変更することもできます。