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

Heroku+Flask+GitHub Action部署Python脚本更新后Spreadsheet缺新列

线上爬虫缺失新增列问题排查方案

高频根因

这类本地/Colab运行正常、线上定时任务输出缺字段的问题,90%集中在以下几类场景:

  • 线上运行的代码根本不是最新版本
    多数人默认推送到GitHub主分支后线上会自动同步,实际上很容易踩几个坑:GitHub Action拉取代码的分支配置错误、Heroku关联GitHub自动部署的开关没打开、Action配置了依赖/代码缓存复用了旧版本文件,最终线上跑的还是改逻辑之前的旧脚本。
  • 线上环境依赖、配置和本地不一致
    新列逻辑用到的解析、写入方法在requirements.txt锁定的旧版本依赖里不生效,且代码没做异常捕获,不会抛出显性错误直接跳过字段;新逻辑用到的环境变量、格式开关在Heroku/GitHub Action的配置后台漏填,触发分支判断时直接走了不带新列的旧输出格式分支。
  • 线上请求拿到的目标网站内容和本地不一致
    Heroku、GitHub Action的出口IP和本地/Colab不同,很可能被目标网站反爬策略识别,返回残缺页面、旧版页面,新列对应的页面元素匹配不到值,又没打日志就直接跳过写入。
  • Spreadsheet写入逻辑硬编码
    写入代码里写死了列数、列名映射关系,新列没加入映射表就算采集到了也不会写入;或是线上配置的Spreadsheet凭证对应的工作表没更新表头,按表头匹配写入时自动跳过了不存在的列。

排查步骤(按优先级从高到低执行,不用全走完基本就能定位问题)

  1. 先核线上运行的代码版本
    • 查GitHub Action运行日志里的拉代码步骤,确认拉取的commit哈希和本地最新提交的哈希完全一致;如果是Heroku dyno直接运行任务,进Heroku控制台打开应用的命令行,直接cat你的爬虫主脚本,确认里面已经包含新增列的采集逻辑——这步能解决60%的同类问题。
    • 如果Action配置了actions/cache缓存依赖或代码,先手动清空所有缓存重跑任务,避免旧缓存被复用。
  2. 补节点日志缩小排查范围
    在三个关键节点加打印日志:新列字段解析完成后打印采集到的值、组装写入Spreadsheet的数据集前打印全量字段列表、调用Spreadsheet写入接口后打印接口返回结果。把日志级别开到debug,手动触发一次线上任务,直接看日志里哪一步丢了新列字段。
    同时在线上环境执行pip freeze导出依赖列表,和本地跑通环境的依赖版本做比对,重点核对爬虫解析、表格写入相关的包,版本不一致的直接把本地验证过的版本号锁死写到requirements.txt里。
  3. 核对配置与分支逻辑
    把Heroku、GitHub Action后台配置的所有环境变量导出来,和本地调试用的.env文件逐行比对,重点核对控制两种输出格式的开关参数,确认线上没有因为参数值不对走到旧格式的输出分支。
  4. 校验线上请求的响应内容
    在爬虫发起请求拿到响应的步骤后,把响应文本片段打到日志里,确认线上拿到的页面结构和本地一致,没有被反爬拦截、返回缺字段的旧页面。
  5. 检查写入逻辑
    排查写入Spreadsheet的代码段,确认没有硬编码列范围(比如之前写死只写入A到F列,新列在G列就会被直接截断);如果是按表头匹配写入,确认线上连接的目标工作表已经提前加了新列的表头,没有拼写、空格类的匹配错误。

排查时不要等每日定时任务触发,直接手动触发线上任务,每修改一处配置/代码就跑一次验证,排查效率能提升数倍。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 19:06:40