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

Python Selenium Pixiv爬虫定时运行无法读取同目录database.txt故障排查

故障原因及解决方案

可能的故障原因

  • 工作目录不匹配:这是最常见的原因。你代码中访问database.txt用的是相对路径,VSCode运行时会自动把工作目录切换到脚本所在目录,所以能正常找到文件。但定时任务(Windows任务计划程序/ Linux cron等)默认的工作目录是系统指定的(比如Windows下默认是C:\Windows\System32),运行脚本时会在默认工作目录下新建database.txt,不会读写你脚本目录下的目标文件。
  • 权限不足:定时任务默认运行的用户身份(比如Windows的SYSTEM用户)可能没有脚本所在目录、database.txt文件、下载保存目录的读写权限,导致文件操作失败。
  • 环境变量不匹配:定时任务的运行环境可能没有加载你当前用户的环境变量,导致无法找到Python解释器、Selenium依赖的geckodriver,或者Firefox浏览器路径,脚本运行提前中断,自然不会执行到更新数据库的步骤。
  • 无头模式运行异常:虽然你已经配置了Firefox无头模式,但部分定时任务运行环境缺少必要的图形依赖,导致Selenium启动浏览器失败,脚本提前终止。

对应解决方案

  1. 固定文件的绝对路径
    修改代码中所有相对路径的文件访问逻辑,先获取当前脚本所在的绝对目录,再拼接目标文件路径,示例修改如下:
# 在代码开头添加以下内容,获取脚本所在目录的绝对路径
import os
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
# 之后所有访问database.txt的地方,都替换为拼接后的路径
# 例如原来的 open('database.txt', 'a+', encoding='utf-8') 改为:
with open(os.path.join(BASE_DIR, 'database.txt'), 'a+', encoding='utf-8') as file:

下载目录的路径也建议统一用绝对路径,避免相对路径导致的保存失败。

  1. 调整定时任务配置
    如果是Windows系统使用任务计划程序,在创建任务的「操作」选项卡中,填写「起始于(可选)」的路径为你的脚本所在目录;也可以写一个bat批处理脚本,先cd到脚本目录再执行Python命令,把批处理脚本设置为定时任务的执行目标:
@echo off
cd /d "你的脚本所在目录的绝对路径"
python 你的脚本文件名.py
  1. 检查权限配置
    把定时任务的运行用户设置为你自己的登录用户,或者给默认运行用户开放脚本目录、database.txt、下载目录的读写权限。

  2. 添加日志排查问题
    在定时任务的执行命令中添加日志输出,查看具体报错信息,比如Windows下可以修改批处理脚本为:

@echo off
cd /d "你的脚本所在目录的绝对路径"
python 你的脚本文件名.py >> run.log 2>&1

运行后查看run.log文件即可定位具体报错位置。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 21:48:00