「座標」の意味は点の位置を表すのに使ういくつかの数の組のことです。地球のどの場所でも座標(すなわち経度と緯度)を確認できます。先日Googleマップのデータをスクレイピングする方法を紹介して、この記事では、Googleマップで場所の緯度・経度の座標をすばやく抽出する方法を紹介します。
実際に、Googleマップの座標がURL内に隠されています。そのことに気付くのは難しいですね。この場合、まずはその場所のURLを抽出し、正規表現により座標を見つける必要があります。東京タワーを例として説明いたします。
まず、ブラウザでGoogleマップを開き、検索ボックスに「東京タワー」を入力し検索します。
ページの読み込みが完了したら、URLで座標を探します。座標は「@」記号の後ろにあります。
次に、URLの抽出を始めます。今回使うツールはOctoparseです。Octoparseは、特に初心者にとって直感的な操作画面で、使いやすいWebスクレイピングツールです。
1.「+」記号をクリックして、カスタマイズモードで新しいタスクを作成します。
2. URLをボックスに入力します。
https://www.google.com/maps/place/%E6%9D%B1%E4%BA%AC%E3%82%BF%E3%83%AF%E3%83%BC/@35.6585848,139.7432442,17z/data=!3m1!4b1!4m5!3m4!1s0x60188bbd9009ec09:0x481a93f0d2a409dd!8m2!3d35.6585805!4d139.7454329?hl=ja
3.「URLを保存する」を押して続行します。
これで、新しいタスクが正常に作成されました。問題は、Googleマップが組み込みブラウザ内で読み込まれないことです。これはなぜでしょうか?これは、組み込みブラウザはGoogleマップと交換性がよくないためです。この問題を解決するには、ブラウザを変更する必要があります。Firefox 45.0に変更すれば、正常に読み込みます。
Webページの読み込みが完了したら、組み込みのブラウザーでデータをクリックすると、「操作ヒント」パネルに選択可能なオプションが表示されます。「選択した要素のテキストを抽出する」を選択します。
これで、抽出操作が正常に作成され、以下のワークフローに追加されたことに気付くはずです。右上の設定画面からフィールド名を編集できます。
設定画面に移動し、下部にある「定義済みフィールドを追加する」を見つけます。クリックしてドロップダウンメニューを表示し、「現在ページの情報を追加する」を選択して、「ページURL」を選択します。
今、WebページのURLが正常にデータフィールドに追加されました。これから、URLフィールドを編集して余分な部分を取り除き、正確な座標を取得する必要があります。
下部の「カスタマイズ」アイコン(小さな鉛筆)をクリックし、「抽出データを再フォーマットする」を選択します。次に、「ステップを追加する」ボタンをクリックし、これにより、データ処理を行う機能リストが表示されます。この場合、「正規表現でマッチする」を選択し、下図の画面になります。
これで、正規表現を記述することにより、希望どおりにデータを編集することができます。正規表現とは、文字列内で文字の組み合わせを照合するために用いられるパターンです。ほとんどの人が式を書くのが難しいことを考えると、使いやすいRegExツールを組み込みました。「RegExツールを試す」ボタンをクリックします。
座標は「@」記号の後、2番目のコンマの前にあることを分かります。「で始める」にチェックを入れ、「@」を入力します。これは、「@」の後の部分が必要であることをRegExに伝えています。同じように、「で終わる」にチェックを入れ、「,17z」を入力します。「@」の後ろにコンマが2つあるため、どのコンマを使用するかを定義するほうが適切です。コンマの後ろに数字などを追加することで区別します。この場合、「17z」を追加します。これにより、RegExにコンマと「17z」の前の部分が必要であることがわかります。「生成する」ボタンをクリックすると、正規表現がボックスに表示されます。
「マッチする」ボタンをクリックして、正しく設定されているかどうかを確認します。右側にマッチした結果が出てきます。次に、「適用する」をクリックしてから「OK」をクリックして確認します。
これで終わりました。さて、タスクを実行し、それが動作するかどうかを見てみましょう。「抽出開始」をクリックし、「ローカル抽出」を選択します。
できました!もし、1000個の場所を調べる場合は?Octoparseでは、タスクを設定するときに10,000以上のURLを入力できます。すごく簡単でしょう!皆さんもお試しください!
もし興味があれば、以下の動画もご覧ください。
※コメント投稿者のブログIDはブログ作成者のみに通知されます