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

使用Pandas从Django本地服务器获取表格数据报错求助

问题解决:Pandas read_html无法从本地Django服务获取表格数据

核心问题:URL格式错误

你传入的地址127.0.0.1:8000/shop/缺少http://协议前缀,Pandas会默认将其当作本地文件名解析,而非网络请求地址——这就是触发那两个警告以及最终ValueError: No tables found的根本原因。

修改后的基础代码

给地址补上协议头即可解决基础问题:

import pandas as pd

# 补充http://协议前缀
tables = pd.read_html('http://127.0.0.1:8000/shop/')
print(len(tables))

后续排查(若仍报错)

如果修改后还是找不到表格,按以下步骤排查:

  • 验证页面是否存在标准HTML表格:直接在浏览器访问http://127.0.0.1:8000/shop/,查看页面源码中是否包含<table>标签(Pandas仅能识别标准<table>结构的表格)。
  • 处理登录权限限制:若该页面需要用户登录才能访问,直接用read_html会获取到未授权的页面内容(通常不含目标表格)。此时需要先用requests库模拟登录会话,再获取页面内容传给Pandas:
import pandas as pd
import requests
from io import StringIO

# 模拟登录会话(需根据Django的登录逻辑调整参数)
session = requests.Session()
login_data = {'username': 'your_username', 'password': 'your_password'}
session.post('http://127.0.0.1:8000/login/', data=login_data)

# 获取目标页面内容
response = session.get('http://127.0.0.1:8000/shop/')
response.encoding = 'utf-8'

# 将页面内容转为StringIO传入read_html
tables = pd.read_html(StringIO(response.text))
print(len(tables))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 07:09:54