セブンイレブンの住所をスクレイピング、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倍あるのか・・・。どこでもあるな。

ZoomやChatworkでファイル共有している方へ

リモートワークが一般的になってきた今「誰が」「どこで」「何を」ファイル共有しているのかしっかりと把握する必要があります。easyDBを利用すればセキュリティ上で安全なファイル共有をクラウド上で行えるだけでなく、ファイルのバージョン管理等も簡単にできます。
ZoomやChatworkでファイル共有するならセキュリティ上で安全なeasyDB
>>>リモートワーク時代の安全なファイル共有「easyDB」はこちら

この記事に関連する記事