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

如何将爬取的HTML表格数据追加到空Pandas DataFrame

问题原因

你的for循环仅提取了每行的td节点,没有写入DataFrame的逻辑,所以最终得到空表。此外需要注意跳过表头行、清洗提取到的文本内容。

修复后的完整代码

!pip install bs4 
from bs4 import BeautifulSoup
import requests
import pandas as pd

url = 'https://en.wikipedia.org/wiki/List_of_largest_banks?utm_medium=Exinfluencer&utm_source=Exinfluencer&utm_content=000026UJ&utm_term=10006555&utm_id=NA-SkillsNetwork-Channel-SkillsNetworkCoursesIBMDeveloperSkillsNetworkPY0221ENSkillsNetwork23455645-2021-01-01'

r = requests.get(url)
html_content = r.content # 重命名避免和后续DataFrame变量重名冲突
soup = BeautifulSoup(html_content, 'html.parser')

df = pd.DataFrame(columns=["Name", "Market Cap (US$ Billion)"])

# 遍历表格行,加[1:]跳过表头行
for row in soup.find_all('tbody')[3].find_all('tr')[1:]:
    col = row.find_all('td')
    if len(col) >=2: # 过滤空行避免报错
        # 提取银行名称,清理多余空格和换行
        bank_name = col[1].get_text(strip=True)
        # 提取市值转换为浮点型
        market_cap = float(col[2].get_text(strip=True))
        # 追加数据到DataFrame末尾
        df.loc[len(df)] = [bank_name, market_cap]

df.head(5)

核心修改点

  • 重命名网页内容存储变量,避免和DataFrame变量重名导致逻辑混乱
  • 遍历行时增加[1:]跳过表头行,避免解析表头无效内容
  • 增加空行校验逻辑,防止遇到无内容的行时抛出异常
  • 对提取的文本做格式化清洗,将市值转换为数值类型方便后续分析
  • 用df.loc方法将每行有效数据写入DataFrame

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 23:24:05