You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python+BeautifulSoup爬取类名重复嵌套div中的新冠统计数据

解决思路

你遇到的类名重复问题可以通过先定位唯一父容器,再在容器内查询子元素的方式解决。你提供的页面结构里,四类统计数据的外层容器都有独有的类名,分别是:

  • 现存确诊:active-case
  • 治愈出院:iblock discharge
  • 死亡病例:iblock death_case
  • 累计确诊:iblock t_case

可直接运行的完整代码

import requests
from bs4 import BeautifulSoup

# 加User-Agent避免被网站反爬拦截
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36"
}
URL = 'https://www.mygov.in/covid-19/'
page = requests.get(URL, headers=headers)
soup = BeautifulSoup(page.text, 'html.parser')

# 提取累计确诊相关数据
total_block = soup.find('div', class_='iblock t_case')
Total_cases = total_block.find('span', class_='icount').get_text(strip=True)
Total_cases_in_last_24_hrs = total_block.find('div', class_='increase_block').get_text(strip=True)

# 提取现存确诊相关数据
active_block = soup.find('div', class_='active-case')
Active_cases = active_block.find('span', class_='icount').get_text(strip=True)
Active_cases_change = active_block.find('div', class_='increase_block').get_text(strip=True)
Active_cases_percent = active_block.find('span', class_='per_block').get_text(strip=True)

# 提取治愈出院相关数据
discharge_block = soup.find('div', class_='iblock discharge')
Discharged_total = discharge_block.find('span', class_='icount').get_text(strip=True)
Discharged_in_last_24_hrs = discharge_block.find('div', class_='increase_block').get_text(strip=True)
Discharged_percent = discharge_block.find('div', class_='per_block').get_text(strip=True)

# 提取死亡病例相关数据
death_block = soup.find('div', class_='iblock death_case')
Deaths_total = death_block.find('span', class_='icount').get_text(strip=True)
Deaths_in_last_24_hrs = death_block.find('div', class_='increase_block').get_text(strip=True)
Deaths_percent = death_block.find('div', class_='per_block').get_text(strip=True)

# 测试打印结果
print(f"累计确诊:{Total_cases},24小时新增:{Total_cases_in_last_24_hrs}")
print(f"现存确诊:{Active_cases},24小时变动:{Active_cases_change},占比{Active_cases_percent}")
print(f"累计治愈:{Discharged_total},24小时新增:{Discharged_in_last_24_hrs},占比{Discharged_percent}")
print(f"累计死亡:{Deaths_total},24小时新增:{Deaths_in_last_24_hrs},占比{Deaths_percent}")

原代码问题说明

  1. 查找父容器时class_参数换行导致匹配失败,且额外加了不存在的attrs参数
  2. 没有在父容器内二次查找目标子元素,直接调用get_text()会返回容器内所有文本,无法得到单独的数值

内容的提问来源于stack exchange,提问作者Yashinde

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.08 11:45:05