地域共通クーポン取扱店舗一覧のExcelファイルをスクレイピング

[地域共通クーポン取扱店舗一覧](https://biz.goto.jata-net.or.jp/couponlist.html#coupon)のExcelファイルをスクレイピング


# スクレイピング

```python
import datetime
import re
from urllib.parse import urljoin

import requests
from bs4 import BeautifulSoup

url = "https://biz.goto.jata-net.or.jp/couponlist.html"

headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko"
}

r = requests.get(url, headers=headers)
r.raise_for_status()

soup = BeautifulSoup(r.content, "html.parser")

area = {}

for a in soup.select("section.download_couponlist div.button_area > a"):

    s = a.get("aria-label")
    m = re.search("地域共通クーポン取扱店舗一覧_(.+)（(\d{4})年(\d{1,2})月(\d{1,2})日時点）", s)

    year, month, day = map(int, m.group(2, 3, 4))

    area[m.group(1)] = {
        "link": urljoin(url, a.get("href")),
        "date": datetime.date(year, month, day),
    }

area
```

# データラングリング
```python
import pandas as pd

# area.keys()
# dict_keys(['北海道', '東北地方', '関東地方', '中部地方', '近畿地方', '中国地方', '四国地方', '九州・沖縄地方', '全国'])

df0 = pd.read_excel(area["全国"]["link"])

df0["紙クーポン"] = df0["クーポン種別"].str.contains("紙", na=False).astype(int)
df0["電子クーポン"] = df0["クーポン種別"].str.contains("電子", na=False).astype(int)

industries = df0["業種"].str.split(".", expand=True).rename(columns={0: "業種コード", 1:"業種名"})

industries["業種コード"] = industries["業種コード"].astype(int)

df1 = pd.concat([df0, industries], axis=1)

pd.crosstab(df1["業種名"], df1["都道府県"])
```

| 業種名                                           |   三重県 |   京都府 |   佐賀県 |   兵庫県 |   北海道 |   千葉県 |   和歌山県 |   埼玉県 |   大分県 |   大阪府 |   奈良県 |   宮城県 |   宮崎県 |   富山県 |   山口県 |   山形県 |   山梨県 |   岐阜県 |   岡山県 |   岩手県 |   島根県 |   広島県 |   徳島県 |   愛媛県 |   愛知県 |   新潟県 |   東京都 |   栃木県 |   沖縄県 |   滋賀県 |   熊本県 |   石川県 |   神奈川県 |   福井県 |   福岡県 |   福島県 |   秋田県 |   群馬県 |   茨城県 |   長崎県 |   長野県 |   青森県 |   静岡県 |   香川県 |   高知県 |   鳥取県 |   鹿児島県 |
|:-------------------------------------------------|---------:|---------:|---------:|---------:|---------:|---------:|-----------:|---------:|---------:|---------:|---------:|---------:|---------:|---------:|---------:|---------:|---------:|---------:|---------:|---------:|---------:|---------:|---------:|---------:|---------:|---------:|---------:|---------:|---------:|---------:|---------:|---------:|-----------:|---------:|---------:|---------:|---------:|---------:|---------:|---------:|---------:|---------:|---------:|---------:|---------:|---------:|-----------:|
| その他                                           |      476 |      762 |      143 |      906 |     1641 |      823 |        269 |      706 |      449 |     1114 |      207 |      420 |      164 |      378 |      281 |      363 |      338 |      461 |      257 |      334 |      220 |      496 |      120 |      189 |     1069 |      651 |     2446 |      502 |      569 |      253 |      320 |      495 |       1188 |      334 |      644 |      622 |      184 |      595 |      445 |      274 |     1216 |      187 |     1322 |      218 |      168 |      200 |        400 |
| その他運送サービス                               |        0 |        4 |        0 |        6 |       11 |        6 |          0 |        2 |        1 |        2 |        2 |        0 |        1 |        6 |        0 |        3 |        2 |        1 |        1 |        4 |        0 |        3 |        2 |        5 |       12 |        7 |        6 |        0 |        4 |        3 |       15 |        2 |          5 |        1 |        1 |        5 |        0 |        5 |        0 |        4 |       11 |        1 |        2 |        7 |        5 |        0 |          2 |
| コンビニ・スーパー                               |      619 |      896 |      200 |     1445 |     2566 |     1611 |        356 |     1772 |      448 |     2909 |      355 |      787 |      425 |      401 |      293 |      313 |      376 |      702 |      575 |      518 |      235 |      851 |      250 |      562 |     2552 |      660 |     5666 |      513 |     1139 |      494 |      587 |      436 |       2898 |      363 |     1403 |      489 |      394 |      511 |      767 |      371 |      688 |      593 |     1100 |      297 |      286 |      232 |        876 |
| スポーツ                                         |       38 |       19 |        5 |       63 |       76 |       75 |         14 |       48 |       10 |       34 |        9 |       22 |       14 |        9 |       11 |        9 |       18 |       26 |       18 |       14 |        6 |       19 |        8 |       13 |       29 |       40 |       46 |       52 |       41 |       27 |       13 |       14 |         48 |        7 |       38 |       24 |        8 |       46 |       43 |       10 |      115 |        9 |       60 |        8 |        8 |        6 |         17 |
| スポーツ観戦                                     |        0 |        0 |        1 |        0 |        2 |        0 |          0 |        0 |        0 |        0 |        0 |        1 |        0 |        0 |        3 |        0 |        0 |        0 |        0 |        0 |        0 |        0 |        0 |        0 |        0 |        0 |       32 |        0 |        0 |        0 |        0 |        0 |          0 |        0 |        0 |        0 |        0 |        0 |        2 |        0 |        0 |        1 |        0 |        0 |        0 |        0 |          0 |
| フィットネス（スポーツジム等）                   |        0 |        2 |        1 |        2 |        4 |        1 |          1 |        1 |        2 |        7 |        0 |        0 |        3 |        0 |        1 |        0 |        1 |        3 |        0 |        3 |        1 |        9 |        0 |        1 |        8 |        0 |       16 |        0 |        9 |        0 |        1 |        1 |          5 |        1 |        6 |        3 |        2 |        0 |        0 |        0 |        5 |        0 |        8 |        0 |        1 |        0 |          1 |
| レンタカー                                       |       51 |       72 |       22 |      109 |      225 |      163 |         36 |      151 |       36 |      173 |       27 |       73 |       36 |       26 |       41 |       44 |       18 |       43 |       63 |       43 |       28 |       64 |       15 |       37 |      224 |       83 |      302 |       59 |      147 |       31 |       43 |       41 |        185 |       27 |      167 |       63 |       48 |       40 |       48 |       54 |       50 |       55 |       60 |       34 |       14 |       31 |         91 |
| 体験型アクティビティ                             |       26 |       96 |        9 |       37 |      151 |       44 |         20 |       24 |       11 |       33 |       12 |       13 |       18 |        6 |       11 |        8 |       45 |       36 |       15 |       24 |        6 |       24 |       17 |        9 |       33 |       22 |      133 |       63 |      454 |       20 |       27 |       21 |         58 |       13 |       30 |       10 |        2 |       37 |        9 |        8 |      110 |       17 |      101 |        8 |       32 |        3 |         76 |
| 劇場、観覧場、映画館、演劇場                     |        0 |        4 |        3 |        3 |        6 |        8 |          0 |        2 |        1 |        4 |        0 |        0 |        1 |        1 |        0 |        0 |        1 |        0 |        0 |        0 |        2 |        2 |        2 |        2 |        4 |        2 |       23 |        1 |        8 |        1 |        2 |        3 |          4 |        3 |        5 |        1 |        3 |        2 |        2 |        0 |        0 |        0 |        2 |        1 |        0 |        0 |          1 |
| 小売（お土産等）                                 |      764 |     1794 |      441 |     2116 |     2456 |     1341 |        280 |     1528 |      702 |     2874 |      393 |     1117 |      309 |      556 |      477 |      456 |      386 |      869 |      673 |      423 |      309 |     1001 |      270 |      450 |     2273 |      754 |     5273 |      637 |      886 |      602 |      645 |      849 |       2262 |      473 |     1918 |      682 |      356 |      636 |      596 |      545 |     1167 |      458 |     1554 |      390 |      300 |      197 |        651 |
| 文化施設（美術館､博物館等）                      |        3 |       21 |        1 |       18 |       18 |        7 |          5 |        1 |       16 |        6 |        3 |       10 |        0 |       11 |        7 |       11 |       22 |       21 |       22 |        6 |        8 |        6 |        3 |       10 |       18 |       17 |       13 |       12 |        3 |        8 |        7 |       17 |         30 |        8 |        5 |        9 |        4 |        4 |        2 |       11 |       31 |        4 |       24 |        5 |       11 |        5 |          4 |
| 海上運送                                         |        9 |        8 |        1 |        5 |       14 |        4 |          5 |        1 |        5 |        8 |        0 |        7 |        0 |        3 |        3 |        0 |        0 |        0 |        5 |        1 |        3 |       36 |        2 |        7 |        6 |        5 |       12 |        0 |       25 |        5 |        3 |        1 |          3 |        1 |        8 |        0 |        2 |        0 |        0 |       14 |        2 |       11 |       13 |       18 |        7 |        1 |         14 |
| 物流（宅配等）                                   |        0 |        2 |        0 |        0 |        5 |        0 |          0 |        0 |        0 |        1 |        0 |        0 |        0 |        0 |        0 |        0 |        0 |        0 |        0 |        0 |        0 |        1 |        0 |        0 |        1 |        0 |        1 |        0 |       31 |        0 |        1 |        0 |          1 |        0 |        0 |        0 |        0 |        0 |        1 |        0 |        1 |        0 |        1 |        1 |        0 |        0 |          2 |
| 航空運送                                         |        0 |        1 |        0 |        0 |        4 |        0 |          0 |        0 |        0 |        1 |        0 |        0 |        0 |        0 |        0 |        0 |        0 |        0 |        0 |        0 |        0 |        2 |        0 |        0 |        1 |        0 |        0 |        0 |        1 |        0 |        2 |        0 |          0 |       15 |        0 |        0 |        0 |        0 |        0 |        0 |        0 |        0 |        0 |        0 |        0 |        0 |          2 |
| 観光施設（遊園地、動物園、温泉施設、観光農園等） |       71 |       50 |       10 |       75 |       89 |       50 |         17 |       38 |       65 |       47 |       13 |       45 |       13 |       20 |       16 |       26 |       52 |       48 |       20 |       32 |       13 |       28 |       18 |       21 |       49 |       42 |       36 |       42 |       43 |       28 |       43 |       25 |         53 |       23 |       22 |       48 |       21 |       54 |       24 |       13 |      119 |       16 |      103 |       18 |       10 |       16 |         18 |
| 遊興施設（ネットカフェ、漫画喫茶等）             |        1 |        2 |        0 |        5 |       20 |        5 |          0 |        7 |        0 |       14 |        2 |        7 |        1 |        1 |        3 |        0 |        0 |        1 |        3 |        0 |        0 |        3 |        1 |        0 |        5 |        5 |       48 |        3 |        4 |        1 |        2 |        0 |         14 |        0 |        7 |        2 |        0 |        2 |        4 |        0 |        2 |        0 |        2 |        3 |        3 |        0 |          1 |
| 鉄道                                             |        8 |       26 |        0 |       14 |        5 |       12 |          8 |        7 |        0 |       17 |        1 |       44 |        0 |       32 |        2 |       21 |        4 |       18 |        9 |       31 |        1 |        6 |        9 |       14 |       94 |       49 |       59 |        8 |       19 |        8 |        6 |        9 |         28 |        5 |       43 |       31 |       14 |       10 |       27 |        5 |       53 |       17 |       69 |       29 |        8 |        2 |          8 |
| 飲食店（酒類提供あり）                           |      275 |      728 |       41 |      312 |      576 |      487 |         51 |      195 |       63 |      884 |      124 |      103 |       40 |      132 |      163 |       54 |       74 |      218 |      115 |       53 |       43 |      328 |       47 |       57 |      719 |      227 |     1578 |      151 |      214 |      128 |      136 |      232 |        522 |      199 |      255 |      110 |       82 |       75 |       98 |       61 |      537 |       40 |      513 |       90 |       92 |       26 |        104 |
| 飲食店（酒類提供なし）                           |       76 |      105 |       13 |      117 |       96 |      111 |         15 |       62 |       23 |      132 |       33 |       26 |       11 |       30 |       42 |       14 |       15 |       77 |       29 |       20 |       15 |       62 |       18 |       18 |      165 |       56 |      130 |       43 |       36 |       38 |       49 |       70 |         99 |       32 |       59 |       23 |       11 |       25 |       25 |       17 |      122 |       19 |      125 |       58 |       24 |        7 |         25 |