парсинг сайта,нужно чтобы скрипт выдавал количество зараженных ,но он ничего не выдает,в чем ошибка?
from bs4 import BeautifulSoup
import requests
def parse():
url = 'https://coronavirus-monitor.ru/statistika/'
HEADERS = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 YaBrowser/20.3.2.242 Yowser/2.5 Safari/537.36'
}
response = requests.get(url, headers = HEADERS)
soup = BeautifulSoup(response.content, 'html.parser')
items = soup.findAll('div', class_ = 'cell')
print(items)
comps = []
for item in items:
comps.append({
'blackk': item.find('span', class_ = 'black').get_text(strip = True)
})
for comp in comps:
print(comp['title'])
parse()
input()
Ответы (1 шт):
Автор решения: gil9red
→ Ссылка
Посмотрел на ту страницу и там заполнение значения таблицы статистики было через javascript, поэтому понадобилось использовать библиотеку с js-движком.
С парсингом помог requests-html. При первом запуске для render() тот установит selenium или его аналог.
# pip install requests-html
from requests_html import HTMLSession
session = HTMLSession()
rs = session.get('https://coronavirus-monitor.ru/statistika/')
rs.html.render() # Без этого не будет выполнения js кода
for row in rs.html.find('#statistics .total-table-row'):
name = row.find('.name', first=True).text.rstrip(':')
value = row.find('.value', first=True).text
print(name, value)
# Зараженных 1635879
# Тяжелобольных 1097
# На подозрении 1141
# Смертей 99420
# Вылеченных 368052