キャッシュレス決済の地図より加盟店一覧をスクレイピング

出典:キャッシュレス・消費者還元事業

map.cashless.go.jp

import requests
import pandas as pd

url = 'https://api.cashless.go.jp/location/'

s = requests.Session()

params = {
    "lat":35.681236,
    "lng":139.76712499999996,
    "limit":30,
    "d":15000,
    "q":"",
    "b":"",
    "c":"",
    "r":"",
    "p":"",
}

"""
lat = 緯度

lng = 経度

d=縮尺
15000
100000

b = 業種
X:小売業
Y:サービス業
Z:その他業種

c = カテゴリー
100:総合(非専門)
101:食料品
102:衣料品
103:貴金属・服飾品
104:電化製品
105:家具・調度品
106:書籍・玩具・音楽CD
108:ガソリンスタンド
109:その他小売

110:飲食業
111:宿泊業
112:公共料金
113:理容・美容業
114:運輸業

115:その他サービス
199:その他

r = 還元率
2:2%
5:5%

p = 決済手段 ※カンマで結合
1:VISA
2:Mastercard
3:JCB
4:AMERICAN EXPRESS
5:Diners Club
6:交通系IC
7:nanaco
8:WAON
9:楽天Edy
10:iD
11:QUICPay
12:LINE Pay
13:PayPay
14:Origami Pay
15:楽天Pay
16:d払い
17:J-Debit
18:au PAY
19:メルペイ
30:その他ブランド/サービス
"""
r = s.get(url, params=params)

print(r.json())

data = r.json()

# 位置情報
df_loc = pd.concat([pd.read_json(url+k, orient='index') for k in data["items"].keys()])
df_loc.set_index('id', inplace=True)
df_loc

# 店舗情報
df_store = pd.concat([pd.read_json(url+str(i), lines=True) for v in data["items"].values() for i in v])
df_store.set_index('id', inplace=True)
df_store

print(len(df_loc), len(df_store))

df = df_store.join(df_loc)
df

# 重複確認
df[df.duplicated()]