検索結果と詳細ページを同時にスクレイピングする
フォローする目標
リストページからデータを抽出してから、各詳細ページに移動し、さらにデータを抽出する
使用バージョン
8.6.X
例URL
https://www.carsensor.net/shop/kumamoto/index.html
詳細ステップ
ステップ1 リストページのデータを抽出する
- リンクが付いているタイトルをクリックします(特徴として、ブラウザではクリックすると詳細ページに移動します)。
このページで利用可能なすべてのタイトルが検出されるまで、クリックを続けます。
※タイトルを選択した後、「A」タグであるかどうか確認を行います。「A」ではない場合、操作提案より選び直せます。
- 全タイトルが検出されることを確認できたら、「テキスト+リンク」を抽出します
- ワークフローチェックポイント1
- ループアイテムXpathの修正
ウェブサイトの構造上、矢印で示したエリアはカード構造と類似しているため、自動的に同じタイプのデータとして認識されてしまいます。データ収集の精度を向上させるために、手動でXPathを修正することができます。
//div[@class='caset caset--shopAll blockLink']
- 正しいXPathが見つからない場合、データを収集した後にデータクリーニングを行うこともできます。ただし、タスクの設計時には、無効なアイテムを手動でスキップする必要があります。
- もしタイトル以外のデータを収集したい場合は、以下のチュートリアルをご覧ください。
- 複数のページを同時にスクレイピングする必要がある場合は、以下の記事を参考にしてページングループを追加してください。
- ワークフローチェックポイント1(複数ページの場合)
ページめくりボタンXpath
//div[@class='paging']/button[text()='次へ']
ステップ2 サブページに入るループを作成する
もし前のステップで選択したタイトルに正しいリンクが含まれている場合、次のステップで「サブページ...」が表示されますので、どれか1つをクリックしてください。
- ワークフローチェックポイント2
※詳細ページに正常にアクセスできない場合は、詳細ページの通信方法を調整してください。
ステップ3 詳細ページのデータ抽出を設定
詳細ページに入り、【データを抽出】ステップを追加するか、データをクリックして直接データを収集します。
ワークフローチェックポイント3
データの精度を向上させるために、ここではXPathを使用して各データの位置を指定します。
//dt[text()='法人名']/following-sibling::dd
//dt[text()='住所']/following-sibling::dd
//dt[text()='営業時間']/following-sibling::dd
//dt[text()='定休日']/following-sibling::dd
※詳細ページでは、以下のようなデータ形式が表示されることがあります。
ワークフローチェックポイント3(複数ページの場合)
ステップ4 クローラの最適化