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

如何优雅处理pandas read_html未匹配到指定表格时的报错终止问题

解决pandas read_html匹配不到表格导致程序中断的方案

核心方法是使用Python的try...except异常捕获结构包裹存在失败风险的代码段,捕获对应异常后执行跳过逻辑即可,不会影响后续页面的处理。

首先你提供的示例代码存在一处变量拼写错误:你定义的链接变量是link,但requests.get()里传入了不存在的变量pink,运行时会先抛出NameError,需要先修正该问题。

以下是适配批量爬取场景的完整实现代码:

import pandas as pd
import requests

# 替换为你的数千个目标链接列表
link_list = [
    'https://en.wikipedia.org/wiki/Barbados',
    # 其他链接...
]

for link in link_list:
    try:
        # 所有可能抛出异常的代码都放在try块内
        req = requests.get(link, timeout=10)
        # 主动校验请求是否成功,避免无效内容传入read_html
        req.raise_for_status()
        wiki_table = pd.read_html(req, attrs = {"class":"infobox vcard"})
        df = wiki_table[0]
        
        # 这里补充你后续处理df的逻辑,比如存储数据等
        print(f"{link} 表格提取成功")
    
    # 捕获read_html找不到匹配表格的异常
    except ValueError:
        print(f"{link} 未找到符合要求的表格,跳过该页面")
        continue
    # 捕获所有请求相关异常(网络错误、超时、请求失败等)
    except Exception as e:
        print(f"{link} 请求或解析失败,错误信息:{str(e)},跳过该页面")
        continue

逻辑说明

  • 你可以根据实际需求调整要捕获的异常类型,如果不需要细分错误原因,可以直接捕获通用Exception,确保所有异常都不会中断程序运行
  • 每次异常触发后执行continue就会直接进入下一轮循环,处理下一个链接,不会终止整个爬取任务

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 03:27:04