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

如何抓取同一网站的多个表格?现有代码仅能获取单个表格

解决多表格抓取问题

你的问题出在只抓取了第一个匹配.table_bd的表格容器,select_one只会返回第一个符合条件的元素,自然无法获取页面上的其他表格。要抓取所有表格,需要做以下修改:

核心修改点

  1. 把soup.select_one(".table_bd")替换为soup.select(".table_bd"),这样能获取页面上所有带.table_bd类的表格容器。
  2. 遍历所有获取到的表格容器,逐个解析并处理。

修改后的完整代码

import pandas as pd
from bs4 import BeautifulSoup
from playwright.sync_api import sync_playwright

def scrape_ranking(url, base_sheet_name):
    with sync_playwright() as pw:
        browser = pw.chromium.launch()
        page = browser.new_page()
        page.goto(url, wait_until="networkidle")
        soup = BeautifulSoup(page.content(), "html.parser")
        # 获取所有带.table_bd类的表格容器
        tables = soup.select(".table_bd")
        print(f"共找到 {len(tables)} 个表格容器")

        if not tables:
            print("未找到任何表格。")
            return
        
        # 遍历每个表格容器,解析并处理
        with pd.ExcelWriter("jockeyclub.xlsx", engine="openpyxl", mode='a', if_sheet_exists='overlay') as writer:
            for idx, table in enumerate(tables):
                try:
                    # 解析当前容器内的表格(如果一个容器有多个子表格,可循环pd.read_html的结果)
                    df_list = pd.read_html(str(table))
                    for df_idx, df in enumerate(df_list):
                        print(f"=== 表格 {idx+1}-{df_idx+1} ===")
                        print(df)
                        # 保存到Excel,用不同的sheet名区分
                        sheet_name = f"{base_sheet_name}_Table_{idx+1}_{df_idx+1}"
                        df.to_excel(writer, sheet_name=sheet_name, index=True)
                except Exception as e:
                    print(f"处理表格 {idx+1} 时出错: {str(e)}")

url_trainer = "https://racing.hkjc.com/racing/information/english/racing/Draw.aspx#race1.aspx"
scrape_ranking(url_trainer, "Race Card 1")

补充说明

  • 如果某个.table_bd容器内包含多个子表格,pd.read_html会返回一个DataFrame列表,代码里的内层循环会处理这种情况。
  • 保存Excel时,用base_sheet_name_表格编号_子表格编号作为sheet名,避免覆盖原有内容;也可根据需求调整为同一sheet内的不同起始行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 23:51:04