yahooマップでGPS値をクローリングで取得する方法

Pocket
LINEで送る
GREE にシェア
LinkedIn にシェア

こんにちわ。
 

mapデータにまあまあ詳しくなってきた、下駄です。
 

「GPS」とかけまして、
 

「待ち合わせの時の暇つぶし」と、ときます。
 

そのココロは・・・
 

くるまで(車で、来るまで)便利に使えます。

yahooマップは優秀

以前紹介した「geocoding.jp」サービスで、住所を検索してみても、GPSの値が取得できずにエラーページになってしまう事が何度か発生したので、GPS値クローリングのシステムを見直すことにしました。
 


 

リンク : http://wordpress.ideacompo.com/?p=15718
 

Googlemapは、初回からクレカ登録をしなければいけないので、実験段階の今の段階ではもっと簡易にしたいと考えてyahooマップを使うことにしました。
 

geocodingで検索できなかった住所も、yahooマップでは表示されているので、双方をうまく使って検索結果率を高めてみたいと思います。

URL設定と検索処理が必要

googleMapやgeocodingでは、サイトドメインにクエリとして住所を追加して、そのURLを開いただけで、マップが表示されていたので、
yahooマップも同じ仕様だと思っていたんですが、どうやら、違っていました。
 

yahooマップのトップページは、以下のURL
 

https://map.yahoo.co.jp/maps
 


 

検索すると本当のトップページは下記なのですが、上のURLの方が、曖昧な住所も検索してくれて非常に便利に使えます。
 

https://map.yahoo.co.jp/
 


 

そして、検索フォームに住所を登録して、「検索」ボタンを押すとマップが表示されるという感じですね。
 

ちなみに、ダイレクトにURLクエリにアクセスしてみると、GPS値の取得がされず、ピンも立たないマップが表示されます。
 

クローリング方法

そして、検索したページ内の、”.jssearch”(class名)というaリンクの属性に、”lat”と”lon”があるので、これが検索結果のGPS値になります。
 

puppeteerのコースコードも載せておきます。
 

 

住所の箇所に、リアルな都道府県からの地名を入れると、gpsの値が、”lat,lon”形式で返るようになっています。
 

使用の環境に合わせてソースを書き換えてお使いください。

yamlを使ったほうがいい?

puppeteerで便利に住所入力して、検索ボタンを押して、GPS値を取得できるようになったので、とりあえず、geocodingと併用してGPSデータ取得に活用させてもらおうと思います。
 

でも、YahooにはYAMLという便利なAPIがあり、これを使ったほうが遥かに正確に問題なくスピードも早くデータ取得ができてしまうことは、重々承知の上です。
 

そうした場合は、puppeteerではなくて、PHPでダイレクトに取得できるので、構成自体が変わってしまうので、今のところはこれでヨシとしておきましょう。

Leave a Reply

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です