通过 class returns 空列表获取标签

Getting tags by class returns an empty list

我正在使用请求和 Beautiful Soup 从 https://covid19.who.int/ 抓取一些数据。在网站顶部附近,有一个包含数字的框,例如“过去 24 小时内的新案例”,这是我想要使用的。检查该网站后,我发现它存储在一个 div 容器中,带有 class “sc-AxjAm sc-qQxXP hTCctY”。但是,当我尝试获取此元素时,它 returns 是一个空列表。这是我的代码:

import requests
from bs4 import BeautifulSoup

r = requests.get(url='https://covid19.who.int')
soup = BeautifulSoup(r.text, 'lxml')
data = soup.find_all('div', class_='sc-AxjAm sc-qQxXP hTCctY')
print(data)

此代码打印一个空列表。有人可以帮忙吗?

信息是通过 JSON 请求中检索到的数据在浏览器中构建的。所以都是可用的,只是不在返回的HTML中。

尝试以下操作:

import requests

req = requests.get('https://covid19.who.int/page-data/index/page-data.json')
data = req.json()
cases = data['result']['pageContext']['rawDataSets']['byDay']['rows'][-1]

print(f"New Cases in last 24hrs: {cases[6]:,}")
print(f"Cumulative cases: {cases[7]:,}")
print(f"Cumulative deaths: {cases[2]:,}")

这应该给你:

New Cases in last 24hrs: 3,321,782
Cumulative cases: 364,191,494
Cumulative deaths: 5,631,457

JSON 中返回的信息量巨大,因此试图找到您想要的信息将是一个挑战。我建议您将 req.text 的内容写入文本文件并进行检查。