知识库
解析页面算出"主文件比总大小还大":选择器选错了表格
从详情页解析文件列表,算出一个明显违反常识的结果:主文件体积比整个列表的总大小还大。数字自己会说话—— 这不可能 。这篇文章讲这个"不可能"背后的 HTML 解析陷阱。 现象 从详情页解析文件列表,算出来的主文件体积竟然 比总大小还大 : …
接口"正常返回了",但返回的其实是默认热门榜单
调用一个 API,它返回了 200,返回了 JSON,返回了结果列表——一切看起来都很成功。但你仔细一看内容,全是无关的东西。这篇文章讲的是一种最阴险的失败: 接口不报错,但它没听你的话。 现象 用某个搜索 API 按中文名搜索,请求 成功…
网页抓取工具被拦,改用命令行就通了:问题在网络出口
同一个 URL,一个工具抓全部失败,另一个工具抓立刻成功——地址一样、目标一样、数据一样。这种"换个工具就好"的现象,往往不是工具的问题,而是它们 从不同的网络出口出去 。 现象 某个网页抓取工具抓某些站点 全部失败 ,看起来像是被目标站点…
命令行下载工具在某些站点握手失败,换网络也没用
一个命令行 HTTP 工具访问某些站点时报 SSL 握手失败,你换了 Wi Fi、换了热点,甚至换到另一台机器——还是失败。这篇文章解释为什么"换网络没用",以及该往哪个方向查。 现象 某命令行 HTTP 工具访问部分站点时报 SSL 握手…
匿名调用代码托管平台 API 批量下载,很快就被限流
批量下载代码仓库的时候,前几十个正常,跑着跑着突然全部变成 403。你以为是被封了 IP,其实是撞上了一个大多数人根本不知道的配额限制。 现象 调某代码托管平台的 API 批量下载文件,中途开始 全部返回 403 : 响应体里通常带着明确的…
抓某些站点报 CERTIFICATE_VERIFY_FAILED,请求根本发不出去
采集脚本明明昨天还好好的,今天一跑就抛异常,而且异常发生在"请求发出去之前"——连接压根没建立。这篇文章讲 CERTIFICATE VERIFY FAILED 的原因,以及关闭证书校验时你必须知道的代价。 现象 抓某些站点时,直接抛出证书验…
命令行下载被 CDN 返回 403:403 不一定是你没权限
一个下载任务全线失败,HTTP 状态码清一色是 403 Forbidden。你的第一反应可能是"地址错了"或者"没有权限"。但这次,问题其实出在一个更朴素的地方:对方觉得你不像浏览器。 现象 下载某类流媒体分片时,CDN 持续返回 403,…
高频抓取触发限流:抓了 250 个之后整个任务中断
写采集脚本的人,大多经历过那个转折点:前几分钟一切顺利,突然之间目标域名的连接全部失败,整个任务中断。这篇文章讲的是限流的机制,以及为什么"能跑通"和"能长期稳定跑"是两回事。 现象 连续抓取历史数据时,抓了大约 250 个对象之后,该域名…
时间戳全用本地"现在",把过期数据当成了实时数据
每天自动生成一份报告,文件名显示是深夜生成的,内容却写着"当日数据"——而其中一部分数值其实是上一时点(隔夜)的。这篇文章讲的就是这种"时间戳全用本地现在"造成的错觉。 现象 一份每天生成的报告,文件名的时间戳显示它是深夜生成的,正文里也明…
确定性函数冒充"随机":为什么你的流水线每天生成同一批结果
你给流水线加了定时任务,每天自动跑一遍,满心期待每天产出新鲜内容。结果打开一看——跟昨天一模一样,跟前天也一模一样。问题不在定时任务,而在那个被你当成"随机"的挑选函数。 现象 流水线每天都生成同一批候选,内容高度重复。加了定时任务之后依然…
出现"不可能的数值"时先怀疑代码:公式、循环变量、键与日历四类错误
当脚本算出一个"物理上不可能"的数字——比如收益率 −100%、t 值 −26——你会先怀疑什么?数据脏了?还是代码写错了?这篇文章的核心观点很短: 先怀疑代码。 现象 回测收益率里出现了 −100% 这种不可能值,以及荒谬到离谱的统计量:…
少数离群值把均值拉爆:中位数只有 -0.01%,均值却是 +7.54%
统计报告里最容易被滥用、也最容易骗人的一个数字,是"平均"。当一组数据里混进少数极端值时,"均值"可能会给出一个完全违背直觉的结论。这篇文章用一个真实的矛盾数字,讲清楚什么时候该用中位数。 现象 某个分组统计里,出现了两个自相矛盾的数字: …
数据源是倒序返回的,取"最新"其实取到了最老的一条
研究脚本最让人兴奋的时刻,是它"跑出了一个显著信号"。最让人心凉的时刻,是几天后发现这个信号完全是你脚本 bug 凭空造出来的。这篇文章记录的就是这样一个"差点被写进规则库"的假发现。 现象 一个研究脚本跑出了一个统计上显著的信号,各项指标…
回测里「能成交」是假象:买不到的那批样本被悄悄算进了结果
一个回测能赚钱,和"你明天真的能按它赚到钱",中间隔着一条常被忽略的鸿沟。这篇文章讲的,就是回测里最常见的一种自欺:把"买不到"的样本也算了进去。 现象 一个策略在"次日收盘买入"的口径下表现良好: 看起来既简单又可行——不用盯盘,不用抢单…
把非独立样本当独立样本,统计量膨胀了好几个数量级
拿到一个 t 值高达 38 的回测结果,你第一反应是什么?兴奋?还是——先数一数,这个样本量是不是在骗你?这篇文章讲的,就是那种"样本量看起来很大、实际上很小"的经典陷阱。 现象 用全样本做回测,t 值高得离谱: 38 的 t 值意味着"这…
前视偏差:用了未来才知道的信息去决定当下
如果你写过任何"策略回测",并且跑出过漂亮得让自己心跳加速的收益曲线,那这篇文章大概率能戳到你——那条曲线里,常常藏着一个你根本没用到的秘密:未来数据。 现象 一个"确认型"策略(典型结构是:先出现信号 A,再等条件 B 确认后入场)回测出…
元组索引取错字段:一个下标让整套统计指标系统性偏小
批量处理数据文件时,你有没有遇到过这种事:脚本一行报错都没有,跑出来的数字"看着差不多,但就是对不上"?等你翻遍公式也找不出问题——因为错根本不在公式里,而在一个不起眼的下标。 现象 一个基于"距区间低点涨幅"的统计指标,算出来的数值系统性…
实时数据源偶发 IndexError——依赖外部通道的代码必须自带降级路径
一个从实时数据源取数的脚本,平时跑得好好的,偶尔却在半夜崩一次,报的还是一个跟你业务逻辑毫不相关的 IndexError。查来看去,问题不在你的代码,而在"那一刻对方没给数据"。 现象 脚本从某个实时数据源取数时,偶发以下错误: 或者干脆卡…
调用 GPU 运行时库报 201、错误码 1、未定义引用——一份 ABI 细节核对清单
要让脚本用上加速卡(GPU)的算力,就得去调它那套底层的运行时 API。这一步经常是"代码看着对、编译也能过,一跑就报一堆看不懂的错误码"。错误码不会告诉你原因,只能对照文档一项项核。 现象 调用某加速卡的运行时 API 时,错误花样百出,…
每次运行都刷 RequestsDependencyWarning——版本不匹配警告该在源头修
脚本功能一切正常,可每次运行都要先刷一行黄色警告,把真正的正常输出挤得看不见。命令行工具尤其难受:想看结果,得先拨开这行噪声。 现象 几乎每次运行脚本,输出开头都固定带着一行警告: 下面的业务输出就淹在这行下面。一行两行还好,对于那些要在循…