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

使用pd.read_excel读取网页XLS文件报错的解决方法咨询

解决读取内网Excel文件报错的方案

问题根源

你遇到的报错本质是:目标URL返回的不是有效的Excel文件,而是文本/HTML内容(比如登录页面、权限验证页面),或者文件格式与指定引擎不兼容。

具体解决步骤

  • 先验证URL返回的真实内容
    先不要直接用pandas读取,先获取并查看返回内容:

    import requests
    
    url = 'https://intranet2.sbs.gob.pe/estadistica/financiera/2024/Julio/C-4252-jl2024.XLS'
    response = requests.get(url)
    # 打印前200个字符,判断是否为HTML页面
    print(response.text[:200])
    

    若输出是HTML代码,说明该资源需要内网权限或登录验证,直接用pandas读取会失败。

  • 携带权限Cookie访问
    如果是内网登录后才能访问的资源:

    1. 用浏览器打开该URL,完成登录;
    2. 通过浏览器开发者工具(F12)的Network面板,找到该请求的Cookie头内容并复制;
    3. 用携带Cookie的请求获取文件:
    import requests
    import pandas as pd
    from io import BytesIO
    
    url = 'https://intranet2.sbs.gob.pe/estadistica/financiera/2024/Julio/C-4252-jl2024.XLS'
    headers = {
        'Cookie': '替换为你浏览器中复制的Cookie内容'
    }
    response = requests.get(url, headers=headers)
    
    # 验证返回的是有效Excel文件
    if response.status_code == 200:
        content_type = response.headers.get('Content-Type')
        if content_type in ['application/vnd.ms-excel', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet']:
            df = pd.read_excel(BytesIO(response.content))
        else:
            print(f"返回内容类型异常:{content_type}")
            print("内容预览:", response.text[:200])
    else:
        print(f"请求失败,状态码:{response.status_code}")
    
  • 更换Excel读取引擎(针对有效文件的格式问题)
    如果确认返回的是有效Excel文件,但格式不兼容xlrd(xlrd仅支持旧版.xls,不支持.xlsx),可改用openpyxl引擎:

    1. 先安装依赖:
      conda install openpyxl
      
    2. 读取文件:
      df = pd.read_excel(url, engine='openpyxl')
      

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 03:48:18