- Notifications
You must be signed in to change notification settings - Fork 46.7k
/
Copy pathcovid_stats_via_xpath.py
29 lines (21 loc) · 846 Bytes
/
covid_stats_via_xpath.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
"""
This is to show simple COVID19 info fetching from worldometers site using lxml
* The main motivation to use lxml in place of bs4 is that it is faster and therefore
more convenient to use in Python web projects (e.g. Django or Flask-based)
"""
fromtypingimportNamedTuple
importrequests
fromlxmlimporthtml
classCovidData(NamedTuple):
cases: int
deaths: int
recovered: int
defcovid_stats(url: str="https://www.worldometers.info/coronavirus/") ->CovidData:
xpath_str='//div[@class = "maincounter-number"]/span/text()'
returnCovidData(
*html.fromstring(requests.get(url, timeout=10).content).xpath(xpath_str)
)
fmt="""Total COVID-19 cases in the world: {}
Total deaths due to COVID-19 in the world: {}
Total COVID-19 patients recovered in the world: {}"""
print(fmt.format(*covid_stats()))