如何优雅处理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
相关产品推荐
相关产品推荐

