@@ -59,10 +59,12 @@ class VaccinationData:
|
||||
total_vaccinations: int = 0
|
||||
num_vaccinated_once: int = 0
|
||||
num_vaccinated_full: int = 0
|
||||
num_vaccinated_booster: int = 0
|
||||
|
||||
ratio_vaccinated_once: float = 0.0
|
||||
ratio_vaccinated_full: float = 0.0
|
||||
ratio_vaccinated_total: float = 0.0
|
||||
ratio_vaccinated_booster: float = 0.0
|
||||
|
||||
|
||||
class CovidCrawlerBase(ABC):
|
||||
@@ -165,9 +167,9 @@ class CovidCrawler(CovidCrawlerBase):
|
||||
result = soup.find(id=container_id)
|
||||
text = re.sub(r"\s+", " ", result.text)
|
||||
regexes = [
|
||||
r"(?P<total_vaccinations>\d+[.]\d+) Impfdosen",
|
||||
r"Weitere (?P<num_vaccinated_once>\d+[.]\d+) Personen haben die Erstimpfung erhalten",
|
||||
r"(?P<num_vaccinated_full>\d+[.]\d+) Personen sind bereits vollständig geimpft",
|
||||
r"(?P<total_vaccinations>\d+([.]\d+)?) Personen in Augsburg mindestens",
|
||||
r"(?P<num_vaccinated_full>\d+([.]\d+)?) Personen sind mindestens zweimal geimpft",
|
||||
r"(?P<num_vaccinated_booster>\d+([.]\d+)?) Personen haben eine Auffrischungsimpfung",
|
||||
]
|
||||
values = {}
|
||||
for r in regexes:
|
||||
@@ -185,18 +187,24 @@ class CovidCrawler(CovidCrawlerBase):
|
||||
if not matches:
|
||||
raise ValueError(f"Could not extract date from scraped web page, {text=}")
|
||||
|
||||
values["num_vaccinated_once"] = values["total_vaccinations"] - (
|
||||
values["num_vaccinated_full"] + values["num_vaccinated_booster"]
|
||||
)
|
||||
|
||||
values["date"] = parse_date(**matches.groupdict()).strftime("%Y-%m-%d")
|
||||
result = VaccinationData(**values)
|
||||
|
||||
# Total population in Augsburg as of 2020
|
||||
# https://www.augsburg.de/fileadmin/user_upload/buergerservice_rathaus/rathaus/statisiken_und_geodaten/statistiken/Monitoring/Demografiemonitoring_der_Stadt_Augsburg_2021.pdf
|
||||
population = 299021
|
||||
# Total population in Augsburg as listed on the crawled page
|
||||
population = 298014
|
||||
|
||||
result.ratio_vaccinated_full = result.num_vaccinated_full / population * 100
|
||||
result.ratio_vaccinated_once = result.num_vaccinated_once / population * 100
|
||||
result.ratio_vaccinated_total = (
|
||||
result.ratio_vaccinated_once + result.ratio_vaccinated_full
|
||||
)
|
||||
result.ratio_vaccinated_booster = (
|
||||
result.num_vaccinated_booster / population * 100
|
||||
)
|
||||
_log.debug(f"Result data: {result}")
|
||||
|
||||
return result
|
||||
|
||||
Reference in New Issue
Block a user