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

从HTML表格抓取新冠数据:如何去除结果中的大洲字段

解决Web Scraper抓取新冠数据时排除大洲信息的问题

嘿,作为Web Scraping新手能写到这一步已经很棒啦!针对你遇到的多余大洲数据问题,我来给你几个简单易懂的解决方案,都是基于你现有代码修改的:

方案1:通过样式排除隐藏的大洲单元格

观察你提供的HTML片段,大洲所在的<td>带有display:none样式,我们可以直接筛选掉这类单元格:

import requests
from bs4 import BeautifulSoup

url = "https://www.worldometers.info/coronavirus/"
page = requests.get(url, verify=True)
soup = BeautifulSoup(page.content, features="lxml")
rows = soup.select("tr")

for row in rows:
    # 只保留不包含 display:none 样式的td元素
    cells = row.find_all("td", style=lambda val: val and "display:none" not in val)
    # 提取每个单元格的文本,同时去掉多余的空格和换行
    row_data = [cell.get_text(strip=True) for cell in cells]
    # 跳过空行(比如表格里的分隔行)
    if any(row_data):
        print(row_data)

这个方法的好处是精准匹配隐藏的元素,不会误删其他有效数据。

方案2:直接排除最后一个单元格

从HTML结构来看,大洲信息总是每个<tr>的最后一个<td>,我们可以直接截取前N个单元格:

import requests
from bs4 import BeautifulSoup

url = "https://www.worldometers.info/coronavirus/"
page = requests.get(url, verify=True)
soup = BeautifulSoup(page.content, features="lxml")
rows = soup.select("tr")

for row in rows:
    cells = row.find_all("td")
    # 排除最后一个td(也就是大洲所在的单元格)
    if cells:
        relevant_cells = cells[:-1]
        row_data = [cell.get_text(strip=True) for cell in relevant_cells]
        if any(row_data):
            print(row_data)

这个方法更简单直接,适合结构稳定的表格,但如果网站后续调整了列顺序,可能需要修改代码。

方案3:通过自定义属性排除大洲单元格

那个大洲<td>带有data-continent属性,我们可以利用这个属性来精准排除:

import requests
from bs4 import BeautifulSoup

url = "https://www.worldometers.info/coronavirus/"
page = requests.get(url, verify=True)
soup = BeautifulSoup(page.content, features="lxml")
rows = soup.select("tr")

for row in rows:
    # 只保留没有 data-continent 属性的td元素
    cells = row.find_all("td", attrs={"data-continent": False})
    row_data = [cell.get_text(strip=True) for cell in cells]
    if any(row_data):
        print(row_data)

这个方法是最可靠的,因为网站很少会随意修改自定义属性,即使样式或列顺序变了,只要这个属性存在就能生效。

新手小提示

  • get_text(strip=True):帮你去掉文本前后的空格、换行符,让数据更整洁;
  • if any(row_data):过滤掉表格里的空行(比如表头之间的分隔行);
  • 如果想把数据保存成CSV文件,可以配合Python的csv模块,把收集到的row_data写入文件,方便后续做数据可视化。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 15:42:30