使用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访问
如果是内网登录后才能访问的资源:- 用浏览器打开该URL,完成登录;
- 通过浏览器开发者工具(F12)的Network面板,找到该请求的
Cookie头内容并复制; - 用携带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引擎:- 先安装依赖:
conda install openpyxl - 读取文件:
df = pd.read_excel(url, engine='openpyxl')
- 先安装依赖:
内容的提问来源于stack exchange,提问作者Edu2694
相关产品推荐
相关产品推荐

