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

Scrapyd中爬虫无法爬取但scrapy crawl命令可正常执行的问题

Scrapyd部署爬虫启动即终止问题的排查与解决

针对你遇到的本地Scrapy爬虫运行正常,但Scrapyd部署后启动立即结束、无爬取记录的问题,按以下步骤逐一排查:

1. 修复项目名称大小写不一致问题

你的scrapy.cfg中配置的项目名为nebulaemailscraper,但listprojects.json返回的部署项目名是NebulaEmailScraper,Scrapyd对项目名称大小写敏感,调度时必须严格匹配。

操作:调度爬虫时使用正确的项目名,示例命令:

curl http://localhost:6800/schedule.json -d project=NebulaEmailScraper -d spider=examplespider

2. 确保虚拟环境依赖完全一致

本地开发环境和Scrapyd运行环境的依赖可能存在差异,导致爬虫在Scrapyd环境中无法正常初始化。

操作:

  • 本地导出依赖清单:
pip freeze > requirements.txt
  • 在Scrapyd所在的虚拟环境中安装依赖:
pip install -r requirements.txt

重点确认爬虫用到的第三方库(如解析库、代理工具等)是否都已安装。

3. 排查爬虫初始请求来源

爬虫启动即终止的核心原因通常是没有初始请求,检查你的爬虫代码:

  • 如果start_urls是从本地文件读取:确认服务器上存在该文件,且路径与本地一致;
  • 如果start_urls依赖环境变量:确保Scrapyd启动时已加载对应环境变量(如通过systemd服务配置Environment参数,或手动启动前先执行export命令);
  • 如果start_urls由自定义参数生成:调度爬虫时需传递对应参数,示例:
curl http://localhost:6800/schedule.json -d project=NebulaEmailScraper -d spider=examplespider -d category=inventory

4. 修复settings.py的重复配置

你的settings.py中重复定义了SPIDER_MIDDLEWARES、DOWNLOADER_MIDDLEWARES等配置块,可能导致配置解析异常。删除重复部分,保留一份完整配置:

BOT_NAME = "nebulaemailscraper"
SPIDER_MODULES = ["nebulaemailscraper.spiders"]
NEWSPIDER_MODULE = "nebulaemailscraper.spiders"

USER_AGENT = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.67 Safari/537.36"

ROBOTSTXT_OBEY = False
DOWNLOAD_DELAY = 0.1

SPIDER_MIDDLEWARES = {
    "nebulaemailscraper.middlewares.NebulaemailscraperSpiderMiddleware": 543,
}

DOWNLOADER_MIDDLEWARES = {
    'nebulaemailscraper.middlewares.NebulaemailscraperDownloaderMiddleware': 543,
}

EXTENSIONS = {
    'scrapy.extensions.telnet.TelnetConsole': None,
}

ITEM_PIPELINES = {
    "nebulaemailscraper.pipelines.EmailsDetailsPipeline": 300,
}

同时检查中间件、管道代码,确认没有依赖本地路径或未在服务器上存在的资源。

5. 提升日志级别查看详细错误

默认日志级别无法显示爬虫初始化时的异常,修改Scrapyd配置文件(默认路径为~/.scrapyd.conf或/etc/scrapyd/scrapyd.conf):

[scrapyd]
log_level = DEBUG

重启Scrapyd后重新调度爬虫,查看logs/目录下对应项目的日志文件,即可获取爬虫启动失败的具体原因。

6. 模拟Scrapyd环境直接运行爬虫

在Scrapyd的虚拟环境中直接运行爬虫,验证是否存在环境相关错误:

# 找到Scrapyd部署的项目路径(通常在scrapyd的projects目录下)
cd /path/to/scrapyd/projects/NebulaEmailScraper
scrapy crawl examplespider

如果运行报错,即可定位具体问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 11:05:18