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

BeautifulSoup抓取的表格行拼接文本如何拆分字段归类输出

实现方案

完全不需要硬拆已经拼接好的纯文本,直接提取tr标签下的td子节点即可,这是最稳妥、出错率最低的方案。你现在调用tr.get_text()相当于把同一行所有td的内容直接无分隔拼接,当然会出现连在一起的字符串。

可直接运行的代码示例

from urllib.request import urlopen
from bs4 import BeautifulSoup
import pandas as pd

url = 'https://www.peakbagger.com/list.aspx?lid=5651'
html = urlopen(url)
soup = BeautifulSoup(html, 'html.parser')

# 存储所有山峰数据的列表
peak_list = []
# 跳过表头行,从第二行开始取前100条有效记录
rows = soup.find_all('tr')[1:101]

for row in rows:
    tds = row.find_all('td')
    # 按td顺序提取对应字段,可根据自己的需求增删字段
    item = {
        "序号": tds[0].get_text(strip=True),
        "山峰名称": tds[1].get_text(strip=True),
        "所属区域": tds[2].get_text(strip=True),
        "海拔(米)": tds[3].get_text(strip=True),
        "所属行政区域": tds[4].get_text(strip=True),
        "所属岛屿": tds[5].get_text(strip=True)
    }
    peak_list.append(item)

# 按类别输出示例:打印所有山峰名称
print("===== 山峰名称列表 =====")
for peak in peak_list:
    print(peak["山峰名称"])

# 也可以直接导出为csv文件方便后续处理
df = pd.DataFrame(peak_list)
df.to_csv("日本百名山数据.csv", index=False, encoding="utf-8-sig")

不建议拆分纯文本的原因

  • 拼接后的纯文本没有固定分隔符,部分山峰名、区域名的字符规则不统一,用split或者正则拆分很容易出现匹配错误,稳定性极差
  • 直接提取td节点属于结构化提取,只要页面表格结构不变,提取结果100%准确

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 09:27:04