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

如何在Python函数中跳过引发错误的URL以合并多网页表格数据?

跳过无表格的URL并合并有效表格数据

这个问题太常见了——批量处理网页表格时,总会碰到几个“不听话”的链接:要么页面里根本没表格,要么页面结构异常,直接导致整个脚本崩溃。解决思路很简单:给读取表格的逻辑加上异常处理,捕获错误后跳过有问题的URL,继续处理剩下的正常链接就行。

下面是修改后的代码,既保留了你原有的合并逻辑,又加入了错误处理机制:

import pandas as pd

urls = [
    'https://basketball.realgm.com/player/Stephen-Curry/GameLogs/1600',
    'https://basketball.realgm.com/player/LeBron-James/GameLogs/250',
    'https://basketball.realgm.com/player/Anthony-Edwards/GameLogs/117444',
    'https://basketball.realgm.com/player/Jalen-Washington/GameLogs/151233'
]

def fxGameLogs(URL: list) -> pd.DataFrame:
    dfs = []  # 存储成功读取的表格
    for idx, x in enumerate(URL):
        try:
            # 尝试读取网页中的表格集合
            GameLog_list = pd.read_html(x)
            # 取第一个表格(和你原逻辑保持一致)
            GameLogs = GameLog_list[0]
            dfs.append(GameLogs)
            print(f"✅ 成功处理第{idx+1}个URL: {x}")
        except ValueError as e:
            # 捕获read_html找不到表格的典型错误
            print(f"❌ 跳过第{idx+1}个URL: {x} - 原因: 未找到可解析的表格 ({str(e)})")
        except Exception as e:
            # 兜底处理其他意外(比如网络超时、页面404等)
            print(f"❌ 跳过第{idx+1}个URL: {x} - 未知错误: {str(e)}")
    
    # 防止所有URL都失败导致concat报错,返回空DataFrame
    if not dfs:
        return pd.DataFrame()
    
    # 合并所有有效表格并重置索引
    return pd.concat(dfs).reset_index(drop=True)

GameLogs = fxGameLogs(urls)
print(GameLogs)

几个关键点说明:

  • 精准捕获错误:用ValueError专门处理pd.read_html找不到表格的情况,用通用Exception兜底其他意外,避免遗漏问题。
  • 可视化反馈:打印每个URL的处理状态,方便你快速定位哪个链接出了问题。
  • 边界情况处理:如果所有URL都读取失败,返回空DataFrame,避免pd.concat因为空列表抛出错误。

这样修改后,你的函数就会自动跳过那些“捣乱”的URL,只合并成功获取到的表格数据啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 14:52:30