小樽市のコロナの感染状況を可視化

http://otaru-open.city/experiment/covid19-May2021/ ← 2021年5月のデータを可視化したもの

2021年5月29日の小樽市のコロナ感染者情報を取得方法について説明する

小樽市では、下記のようなhtml 形式( https://www.city.otaru.lg.jp/docs/2021031700187/)で公開されている。

このhtml をダウンロードするために、wget を用いて、下記のように実行する

wget https://www.city.otaru.lg.jp/docs/2021031700187/

ダウンロードしたhtmlは下記のようになっているので、python で csv に変換する。

    <tr>
        <td>837</td>
        <td>5月1日</td>
        <td>非公表</td>
        <td>男性</td>
        <td>小樽市</td>
        <td>日本国籍</td>
        <td>非公表</td>
        <td>軽症</td>
        <td>4月27日</td>
        <td>入院等調整中</td>
        <td>あり</td>
    </tr>
import re
import sys
import pandas as pd

with open("index.html","r") as F:
    data = F.read()

'''
		<tr>
			<td>837</td>
			<td>5月1日</td>
			<td>非公表</td>
			<td>男性</td>
			<td>小樽市</td>
			<td>日本国籍</td>
			<td>非公表</td>
			<td>軽症</td>
			<td>4月27日</td>
			<td>入院等調整中</td>
			<td>あり</td>
		</tr>
'''

data = data.replace("\n","")#改行削除
data = data.replace("\t","")#タブ削除
trRegex = re.compile("(<tr>(.+?)<\/tr>)")
tdRegex = re.compile("<td>(.+?)<\/td>")

csv=[]#初期化
if (m_iter := trRegex.finditer(data)) is not None:#複数のマッチにも対
    for tr in m_iter:
        line = tr.group(1)#trタグを取得する:
        print(tr.group(1))#trタグを取得する:
        items=[]#初期化
        if (td_iter := tdRegex.finditer(line)) is not None:#複数のマッチにも対応
            for td in td_iter:
                column = td.group(1)#tdタグを取得する:
                column = column.replace("<p>","")
                column = column.replace("</p>","")
                print("td:",column)
                items.append(column)#項目追加
        if len(items)==11:
            csv.append(items)

df = pd.DataFrame(csv)#csv
df.to_csv("covic-19.csv")