[docs]classLibya:location="Libya"units="samples tested"source_label="Libya National Centre for Disease Control"notes=""source_url="https://ncdc.org.ly/Ar"regex={"samples":r"عدد العينات","date":r"(\d+ \/ \d+ \/ \d+.)",}
[docs]defread(self)->pd.Series:"""Read data from source."""soup=get_soup(self.source_url)data=self._parse_data(soup)returnpd.Series(data)
[docs]def_parse_data(self,soup:BeautifulSoup)->dict:"""Get data from the source page."""# Get relevant elementelem=self._get_relevant_element(soup)# Extract date from soupdate=self._parse_date_from_soup(soup)# Extract metrics from elementdaily_change=self._parse_metrics(elem)record={"source_url":self.source_url,"date":date,"daily_change":daily_change,}returnrecord
[docs]def_get_relevant_element(self,soup:BeautifulSoup)->element.Tag:"""Get the relevant element in soup."""elem=soup.find(text=self.regex["samples"]).find_parent(class_="wptb-text-container").find_next_sibling()returnelem
[docs]def_parse_date_from_soup(self,soup:BeautifulSoup)->str:"""Get date from soup."""date_list=soup.find_all("strong")date=[datefordateindate_listifre.search(self.regex["date"],date.text)]date=date[0].text.replace(" ","").replace("حتىتاريخ","").replace("م","")returnclean_date(date,"%d/%m/%Y")
[docs]def_parse_metrics(self,elem:element.Tag)->int:"""Get metrics from element."""count=elem.text.replace(",","")returnclean_count(count)