厚生労働省の新型コロナウイルス感染症の最新の現在の状況を取得

pip install jaconv

プログラム

import requests
from bs4 import BeautifulSoup

import re

from urllib.parse import urljoin

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


def get_link():

    url = "https://www.mhlw.go.jp/stf/seisakunitsuite/bunya/0000121431_00086.html"

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

    r.raise_for_status()

    soup = BeautifulSoup(r.content, "html5lib")

    href = (
        soup.find("div", class_="l-contentMain")
        .find(string=re.compile(r"^新型コロナウイルス感染症の現在の状況と厚生労働省の対応について"))
        .find_parent("a")
    )

    link = urljoin(url, href.get("href"))

    return link

# 最新情報を取得
url = get_link()

print(url)

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

r.raise_for_status()

soup = BeautifulSoup(r.content, "html5lib")

# タイトル表示

print(soup.find("h1").get_text(strip=True))

# 画像表示

img = soup.find("img", src=re.compile("^data:image/png;base64,"))

img_b64 = img.get("src").replace("data:image/png;base64,", "")

# base64からpngファイルに変換

import base64

png = base64.b64decode(img_b64)

with open("corona.png", "wb") as fw:
    fw.write(png)

from IPython.display import Image

Image("./corona.png")
import pandas as pd

import jaconv

dfs = pd.read_html(soup.prettify(), header=0, index_col=0)

# 国外の発生状況

df1 = dfs[1].copy()


def str2int(x):

    x = x.rstrip("名")
    x = x.replace(",", "")
    x = x.strip()
    x = jaconv.z2h(x, digit=True)

    return int(x)


df1.index = df1.index.str.strip("※ ")

df1["感染者数"] = df1["感染者数"].apply(str2int)
df1["死亡者数"] = df1["死亡者数"].apply(str2int)

df1

# 国内事例(チャーター便帰国者を除く)

dfs[2]

# 武漢市からのチャーター便帰国者に係る発生状況

dfs[3]