Надо помощь с парсингом елемента(числа) с сайта на пайтоне
Новичок в парсинге. Только начал разбираться. Суть в том что надо спарсить актуальное число с сайта по статистике ковида для програмы на пайтоне. Пропробовал что-то набросать, но парситься почему-то много текста, хотя задавал названия класов вроде правильно. Как по мне, это изза одинакових названий класов в блоках.
import requests
from bs4 import BeautifulSoup
URL = 'https://covid19.gov.ua/'
def parse():
HEADERS = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36"
}
response = requests.get(URL, headers = HEADERS)
soup = BeautifulSoup(response.content, 'html.parser')
items = soup.findAll('div', class_ = 'fields')
comps = []
for item in items:
comps.append({
'title' : item.find('div', class_ = 'field-value').get_text(strip = True)
})
for comp in comps:
print(comp['title'])
parse()
Помогите разобраться.
Ответы (1 шт):
Автор решения: GrAnd
→ Ссылка
Просто надо взять другие теги/классы.
Ибо данные там лежат в таких однотипных блоках:
<div class="one-field light-box info-count flex-w-50">
<span class="field-label">хворих на Covid-19</span>
<div class="field-value">
3 400 340
</div>
</div>
import requests
from bs4 import BeautifulSoup
URL = 'https://covid19.gov.ua/'
def parse():
HEADERS = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36"
}
response = requests.get(URL, headers = HEADERS)
soup = BeautifulSoup(response.content, 'html.parser')
items = soup.findAll('div', class_ = 'info-count')
comps = []
for item in items:
comps.append({
'title' : item.find('span', class_ = 'field-label').get_text(strip = True),
'number': int(item.find('div' , class_ = 'field-value').get_text(strip = True).replace(' ', ''))
})
print(comps)
parse()
[{'title': 'хворих на Covid-19', 'number': 3400340},
{'title': 'одужало', 'number': 2877021},
{'title': 'летальних випадків', 'number': 84149},
{'title': 'протестовано', 'number': 15746389},
{'title': 'нових випадків за добу', 'number': 15936},
{'title': 'госпіталізацій за добу', 'number': 3208},
{'title': 'летальних випадків за добу', 'number': 608}]