[docs]classCroatia(CountryTestBase):location="Croatia"units="people tested"source_label="Government of Croatia"source_url_ref="https://www.koronavirus.hr/najnovije/ukupno-dosad-382-zarazene-osobe-u-hrvatskoj/35"regex={"count":r"Do danas je ukupno testirano ([\d\.]+) osoba","date":r"Objavljeno: ([\d\.]{10})",}
[docs]defread(self)->pd.Series:"""Read data from source."""withget_driver()asdriver:driver.get(self.source_url_ref)data=self._parse_data(driver)returnpd.Series(data)
[docs]def_parse_data(self,driver:WebDriver)->dict:"""Get data from the source page."""# Get relevant elementelem=self._get_relevant_element(driver)# Get text from elementtext=self._get_text_from_element(elem)# Get date from textdate=self._parse_date_from_text(text)# Get metrics from textcount=self._parse_metrics(text)record={"date":date,"count":count,}returnrecord
[docs]def_get_relevant_element(self,driver:WebDriver)->WebElement:"""Get the relevant element"""elem=driver.find_element_by_tag_name("body")ifnotelem:raiseValueError("No relevant element found, please check the source.")returnelem
[docs]def_get_text_from_element(self,elem:WebElement)->str:"""Extract text from the element."""returnelem.text
[docs]def_parse_date_from_text(self,text:str)->str:"""Get date from text."""date=re.search(self.regex["date"],text).group(1)returnclean_date(date,"%d.%m.%Y")
[docs]def_parse_metrics(self,text:str)->int:"""Get metrics from text."""count=re.search(self.regex["count"],text).group(1)returnclean_count(count)