セブンイレブンの住所をスクレイピング、GoogleMapAPIで緯度経度に変換して地図プロット

お盆に実家に帰ってもセブンイレブンはどこでもある。気になって調べると店舗数は15000以上、存在していない都道府県は沖縄だけのようです。今日はこのセブンイレブンの店舗を利用していきます。

やりたいこと

  1. セブンイレブンの住所情報をスクレイピング
  2. 住所情報をGoogleMapAPIで緯度経度へ変換
  3. Foliumで地図上にプロット

できるもの

用意するもの

Jupyter notebook
Folium
pandas
json
requests
matplotlib
BeautifulSoup
tqdm
GoogleMapのAPIアカウント

ライブラリ系は全てpipしてください。

つくっていく

1. セブンイレブンの住所情報をスクレイピング

コードみていただけるとわかるかと思うんですが、セブンの住所情報15000以上をインデックスしているサイトさんにアクセスしました。ループの間にスリープ入れてるんですが、実際にやってみるとすぐブロックくらいました(当たり前
ここからさらにUserAgent変えてみたりで全部取得を目指すこともできますが、500件くらいにしました。

BeautifuSoupのスクレイピングが動いているあいだはこんな感じです。tqdmっていうライブラリを入れ込むと、「%」表示されて面白いです。

2. 住所情報をGoogleMapAPIで緯度経度へ変換

それではスクレイピング化(CSV)したものをデータフレーム化しつつ、GoogleMapで緯度経度に変換していきます。

現段階でのデータフレームはこんな感じです。

店舗名 住所
0 セブンイレブン 名古屋椿町店 愛知県名古屋市中村区椿町14-23
1 セブンイレブン品川駅前店新川屋 東京都港区高輪3丁目25-20
2 セブンイレブン 京都駅八条口店 京都府京都市下京区東塩小路釜殿町31-1
3 セブンイレブン浦安舞浜店 千葉県浦安市舞浜2丁目46-1
4 セブンイレブングランフロント大阪店 大阪府大阪市北区大深町3-1

それではGoogleMap使います。コンソールからGoogleMapを有効化するとともに、認証してAPIキーを取得してください。取得したら下記のKEYを変更すれば動くと思います。

店舗名 住所 緯度 経度
0 セブンイレブン 名古屋椿町店 愛知県名古屋市中村区椿町14-23 35.169044 136.880325
1 セブンイレブン品川駅前店新川屋 東京都港区高輪3丁目25-20 35.630302 139.737793
2 セブンイレブン 京都駅八条口店 京都府京都市下京区東塩小路釜殿町31-1 34.984692 135.757333
3 セブンイレブン浦安舞浜店 千葉県浦安市舞浜2丁目46-1 35.639246 139.882497
4 セブンイレブングランフロント大阪店 大阪府大阪市北区大深町3-1 34.705345 135.494643

はいできました。

3. Foliumで地図上にプロット

これは以前の記事の焼き回し(笑 とりあえず緯度経度あると地図表示するにはFoliumが本当にらく。

できた!(重すぎるので画像化してます)

500店舗程度でこのキモさ。この30倍あるのか・・・。どこでもあるな。

この記事に関連する記事