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

如何用Selenium和BeautifulSoup提取网页表格并按页存储为结构化字典

代码调整方案

原代码问题原因

  • 缺失time、BeautifulSoup依赖导入
  • 选择器逻辑错误:未区分表格的表头行和数据行,直接将整行文本作为字典键,也没有按列汇总同字段的多组数据,导致输出结构混乱
  • 未按要求给每页数据加p+页码的外层键

完整修正代码

import time
from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager

s=Service(ChromeDriverManager().install())
driver = webdriver.Chrome(service=s)
driver.maximize_window()
# 打开谷歌的冗余代码可以直接删除
# driver.get('https://www.google.com')

all_data = [{}] # 外层为列表,和你预期的结构完全匹配

for i in range(1,6):
    url = "https://www.transfermarkt.co.uk/silvio-adzic/profil/spieler/{}".format(i)
    driver.get(url)
    time.sleep(3)
    # 初始化当前页的数据结构
    page_data = {
        "competition": [],
        "Appearances": [],
        "Goals": [],
        "Assists": []
    }
    soup = BeautifulSoup(driver.page_source, 'html5lib')
    print(f"In Page {i}")
    # 抓取表格所有行,第一行是表头直接跳过,从第二行开始遍历数据
    tr_list = soup.select("#yw2 tr")
    if not tr_list:
        # 无有效数据直接存空
        all_data[0][f"p{i}"] = page_data
        continue
    for tr in tr_list[1:]:
        td_list = tr.find_all("td")
        if len(td_list) <4:
            continue
        # 按列对应提取字段,列顺序可根据实际表格结构调整
        page_data["competition"].append(td_list[0].get_text(strip=True))
        page_data["Appearances"].append(td_list[1].get_text(strip=True) if td_list[1].get_text(strip=True) else "-")
        page_data["Goals"].append(td_list[2].get_text(strip=True) if td_list[2].get_text(strip=True) else "-")
        page_data["Assists"].append(td_list[3].get_text(strip=True) if td_list[3].get_text(strip=True) else "-")
    # 存入总数据集
    all_data[0][f"p{i}"] = page_data

# 输出验证结果
print(all_data)

调整说明

  • 直接预设统一的表头键名,避免原网页德英混合文本生成乱键
  • 遍历数据行时按列提取对应字段存入列表,结构清晰
  • 自动给每页数据加上p+页码的外层键,完全匹配预期输出格式
  • 空值自动替换为-,和示例效果一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 01:36:03