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

Python获取网站数据集时如何限制请求量为最新100条并解决10000条记录限制报错问题?

Python获取网站数据集时如何限制请求量为最新100条并解决10000条记录限制报错问题?

看起来你碰到了两个实际问题:一是请求数据量超过10000条时触发了服务器的500错误,二是不知道怎么通过Period列筛选出最新的100条数据。我来给你梳理下可行的解决方案~

核心思路:从请求源头限制数据量

服务器返回HTTP Error 500的原因很明确——它不允许单次请求返回超过10000条记录。所以最直接的办法是在请求URL里添加参数,让服务器只返回你需要的最新100条数据,而不是先请求全量数据再筛选(毕竟全量请求会直接报错)。

不同网站的API参数格式可能不一样,但常见的规则有这些:

  • 限制返回条数:用$top=100(OData类API常用)、limit=100或者page_size=100
  • 按时间/周期排序取最新:用$orderby=Period desc(OData)、sort=Period&direction=desc或者order=Period%20desc(%20是空格的URL编码)

举个例子,如果你的目标API是OData规范的,修改后的URL应该是这样的:

# 原URL基础上添加排序和限制参数
url1 = "********?$orderby=Period desc&$top=100"

适配你的代码

把参数加到URL后,你的代码可以直接使用,拿到的就是最新的100条数据:

import pandas as pd, json, ssl, certifi
from urllib.request import urlopen

def get_jsonparsed_data(url):
    response = urlopen(url, context=ssl.create_default_context(cafile=certifi.where()))
    data = response.read().decode("utf-8")
    return json.loads(data)

# 修改后的URL,确保只返回最新100条
url1 = "********?$orderby=Period desc&$top=100"
df = pd.DataFrame(get_jsonparsed_data(url1)['value'])

备用方案:如果API不支持请求参数筛选

要是这个网站的API不支持通过URL参数排序和限制条数,那你只能退而求其次——通过分页请求获取数据,比如每次请求1000条,拿到最后几页的数据后再筛选最新的100条。不过这种方式比较麻烦,而且需要知道API的分页规则(比如$skip参数),优先推荐前面的请求参数方案。

另外,如果成功拿到数据后,你可以再手动确认并筛选最新的100条:

# 按Period列降序排序,取前100条
df = df.sort_values('Period', ascending=False).head(100)

小提示

如果不确定API支持哪些参数,可以看看网站的API文档,或者在浏览器里打开原URL,观察返回的JSON结构里有没有分页、排序相关的提示,也可以尝试在URL里加常见的参数测试(比如先加?$top=10看看返回数据是否减少)。

备注:内容来源于stack exchange,提问作者Keerti Baskar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.21 15:43:15