Airbnbから部屋の情報をスクレイピングする
Friday, October 26, 2018 12:43 PM前回Booking.comからホテルの情報をスクレイピングする方法をご紹介いたしました。今回のチュートリアルでは、WebスクレイピングツールOctoparse 7.Xを使って、Airbnbからホテルの情報をスクレイピングする方法を説明します。(例のURL)
このチュートリアルでは次の内容についても説明します。
· スクロールダウンすることでページネーションを処理する
· ループモードとXPathを変更してすべてのリストを検索する
· RegExツールで星評価を数字に再フォーマット
ヒント! 1. 自分のブラウザで必要に応じてフィルタを設定し、設定したURLをOctoparseに入力してタスクを開始することを強くお勧めします。 2. Airbnb.comの構造と表示は、IP、優先言語、表示画面、さらにはブラウザによっても異なる場合があります。 |
以下はチュートリアルの主な手順です。[タスクファイルをダウンロードする ]
1) 「Go To Web Page」 - 対象のWebページを開く
2) スクロールダウンを設定する - すべてのアイテムを1ページから読み込む
3) 「Loop Item」を作成する - 各アイテムをループでクリックする
5) XPathを変更する - アイテムリストの精度を向上させる(オプション)
6) データカスタマイズ - 部屋の評価を再フォーマットする(オプション)
7) 抽出タスクを始める - タスクの実行を行いデータを取得する
1) 「Go To Web Page」 - 対象のWebページを開く
· Advanced Modeの「+ Task」をクリックします。
自由度の高い「Advanced mode」は、複雑なウェブサイトを対応できます。特にAirbnb.comのような複雑な構造のサイトからデータを抽出するなら、Advanced modeを強くお勧めします。
· URLを「Extraction URL」ボックスに貼り付け、「Save URL」をクリックして移動します。
2) スクロールダウンを設定する - すべてのアイテムを1ページから読み込む
· Octoparseの右上隅にある「Workflow」ボタンを切り替えることで、「ワークフローモード」をオンにします。
ワークフローモード」をオンにして、タスクの手順をより正確に把握することを強くお勧めします。
· 「Scroll Down」で「Scroll down to bottom of the page when finished loading」のボックスをチェックします。
Airbnb.comのようなサイトでは、次へボタンがなく、全てのコンテンツを読み込むには、ページを連続して下にスクロールする必要があります。
「Interval」は2回のスクロールの間隔です。このケースでは「Interval」を3秒に設定します。
「Scroll way」で「Scroll down to the bottom of the page」を選択します。
ヒント! Octoparseで無限のスクロールを処理する方法の詳細については、次を参照してください。 |
3) 「Loop Item」を作成する - 各アイテムをループでクリックする
· 一番目のホテルのタイトルをクリックすると、残りのタイトルが識別されます。
Octoparseは現在ページのタイトルのリンクを自動的に選択します。選択したリンクは緑色で強調表示され、詳細ページへの他のリンクは赤色で強調表示されます。
· 「Loop click each element」を選択します。
ヒント! 上で述べたように、Octoparseが十分な回数スクロールして読み込まれたリストを取得できるようにするには、ループモードとXPathを変更する必要があります。ステップ5で処理方法をご覧ください。 |
4) データを抽出する - 抽出したいデータを選択する
「Action Tips」から「Loop click each element」をクリックすると、Octoparseは一番目のリストの詳細ページを開きます。
· ページ上で必要なデータをクリックします。
· 「Action Tips」から「Extract text of the selected element」を選択します。
· 必要に応じて、フィールド名を編集します。
ヒント! リストの評価をクリックすると、「Extract button outer HTML」を選択します。抽出されたデータは、正規表現でさらに処理する必要があります。ステップ6で処理方法をご覧ください。 |
5) XPathを変更する - アイテムリストの精度を向上させる(オプション)
「Loop click each element」をクリックすると、Octoparseはデフォルトで「Fixed list」ループモードを使用してループアイテムを生成します。「Fixed list」は、一定量の要素を扱うために使用されるループモードです。ただし、Airbnb.com上のリストの数は固定ではなく、スクロールダウンすると増加します。全てのリストを取得できるようにするには、ループモードを「Variable list」に変更し、適切なXPathを入力する必要があります。
· 「Loop Item」ボックスを選択します。
· 「Variable list」を選択し、「 //div[@class="_fhph4u"]/div//div[@class="_v72lrv"]//a 」を入力します。
· 「OK」をクリックして保存します。
ヒント! 1. 「Fixed list」および「Variable lis」は、Octoparseのループモードです。Octoparseのループモードの詳細については: 2. XPathとその生成方法の詳細については: |
6) データカスタマイズ - 部屋の評価を再フォーマットする(オプション)
目標データがWebページに表示可能なテキストとして表示されていない場合は、まずソースコード(HTML)を抽出し、抽出したソースコードを必要な形式に処理する必要があります。
· 「Rating」を選択し、「Customize data field」をクリックします。
· 「Refine extracted data」を選択します。
· 「Add step」をクリックし、「Match with Regular Expression」を選択します。
· 「Try RegEx Tool」を選択します。
· 「Start With」ボックスをチェックし、「Rated」と入力します。
· 「End With」ボックスをチェックし、「out」と入力します。
· 「Generate」と「Match」をクリックします。
· 「Apply」をクリックし、「OK」をクリックします。
· 「OK」をクリックして保存します。
ヒント! Octoparseは8つのデータ再フォーマットオプションを提供します。抽出されたデータをさらに処理できます。正規表現を使ってデータを再フォーマットする方法の詳細は次を参照してください。 |
7) 抽出タスクを始める - タスクの実行を行いデータを取得する
· 左上の「Start Extraction」をクリックします。
· コンピュータでタスクを実行するには「Local Extraction」を選択し、クラウドでタスクを実行するには「Cloud Extraction」を選択します(有料版のみ)。
ここにサンプル出力があります。 「Rating」に空白のフィールドがいくつか表示されます。これは、一部の詳細ページにホテルの評価がないためです。
ヒント! デフォルトでOctoparseがページ上で定義されたパターンの要素を見つけられない場合、フィールドは空白のままになります。しかしOctoparseは必要な要素がWebサイトに表示されていても、定義されたパターンの要素を見つけられないこともあります。この問題が発生した場合は、以下のチュートリアルをご参考ください。 |
この記事は役に立ちましたか?もしご不明な点がございましたら、いつでもお問い合わせください!