
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
scrapyd 镜像是一个基于 debian:bookworm 的 Docker 镜像,集成了 Scrapy 生态系统的多个最新稳定版工具,旨在提供便捷的环境用于部署和运行 Scrapy 爬虫。该镜像预安装了 8 个核心 Python 包,覆盖爬虫开发、部署、运行、监控、JavaScript 渲染等全流程需求,可作为 Scrapy 项目的基础镜像直接使用。
镜像包含以下最新稳定版 Python 包:
scrapyd-deploy 命令用于部署项目debian:bookworm以下 docker-compose.yml 定义了三个服务:scrapyd(后台服务)、scrapy(交互式开发)、scrapyrt(实时 API 服务):
yamlversion: "3.8" services: # Scrapyd 后台服务:部署和运行爬虫 scrapyd: image: easypi/scrapyd ports: - "6800:6800" # Scrapyd 默认端口 volumes: - ./data:/var/lib/scrapyd # 持久化存储爬虫数据(如 items、日志) - /usr/local/lib/python3.11/dist-packages # 挂载 Python 依赖(可选) restart: unless-stopped # Scrapy 交互式开发环境:用于编写和测试爬虫 scrapy: image: easypi/scrapyd command: bash # 启动交互式 shell volumes: - .:/code # 挂载本地项目代码 working_dir: /code # 工作目录设为项目根目录 restart: unless-stopped # Scrapyrt 实时 API 服务:为爬虫提供 HTTP 接口 scrapyrt: image: easypi/scrapyd command: scrapyrt -i 0.0.0.0 -p 9080 # 启动 scrapyrt,绑定所有接口和 9080 端口 ports: - "9080:9080" # Scrapyrt 默认端口 volumes: - .:/code # 挂载本地项目代码 working_dir: /code # 工作目录设为项目根目录 restart: unless-stopped
启动 Scrapyd 服务
bash# 后台启动 scrapyd 服务 docker-compose up -d scrapyd # 查看服务日志 docker-compose logs -f scrapyd
部署并运行爬虫项目
准备开发环境(本地主机操作):
bash# 创建 Python 虚拟环境 mkvirtualenv -p python3 webbot # 安装 scrapy 和 scrapyd-client(用于部署) pip install scrapy scrapyd-client # 创建 Scrapy 项目 scrapy startproject myproject cd myproject # 将项目关联到虚拟环境(可选) setvirtualenvproject # 生成示例爬虫 scrapy genspider myspider mydomain.com # 编辑爬虫代码(按需修改) scrapy edit myspider # 验证爬虫列表 scrapy list
配置部署参数:编辑项目根目录下的 scrapy.cfg:
ini[settings] default = myproject.settings # 项目默认配置 [deploy] url = http://localhost:6800/ # Scrapyd 服务地址(与 docker-compose 映射一致) project = myproject # 项目名称
部署项目到 Scrapyd:
bash# 部署项目 scrapyd-client deploy # 调度爬虫运行 curl http://localhost:6800/schedule.json -d project=myproject -d spider=myspider
访问 Scrapyd 管理界面:打开浏览器访问 http://localhost:6800,可查看爬虫状态、调度任务等。
获取爬取结果:
bash# 从容器中复制爬取的 items 数据到本地 docker cp scrapyd_scrapyd_1:/var/lib/scrapyd/items . # 查看数据文件结构 tree items # 示例输出: # items # └── myproject # └── myspider # └── ad6153ee5b0711e68bc70242ac110005.jl # 爬取结果文件(JSON Lines 格式)
用于快速测试单文件爬虫脚本,无需完整项目结构。
示例:爬取 Stack Overflow 热门问题
创建爬虫脚本(本地主机操作):
bashcat > stackoverflow_spider.py << _EOF_ import scrapy class StackOverflowSpider(scrapy.Spider): name = 'stackoverflow' start_urls = ['http://stackoverflow.com/questions?sort=votes'] def parse(self, response): # 提取问题链接并跟进 for href in response.css('.question-summary h3 a::attr(href)'): full_url = response.urljoin(href.extract()) yield scrapy.Request(full_url, callback=self.parse_question) def parse_question(self, response): # 提取问题详情并输出 yield { 'title': response.css('h1 a::text').extract()[0], 'votes': response.css('.question div[itemprop="upvoteCount"]::text').extract()[0], 'body': response.css('.question .postcell').extract()[0], 'tags': response.css('.question .post-tag::text').extract(), 'link': response.url, } _EOF_
启动交互式 Shell 并运行爬虫:
bash# 启动 scrapy 服务的交互式 shell docker-compose run --rm scrapy # 在容器内执行爬虫(输出结果到 JSON Lines 文件) scrapy runspider stackoverflow_spider.py -o top-stackoverflow-questions.jl # 查看爬取结果 cat top-stackoverflow-questions.jl # 退出容器 exit
Scrapyrt 可为现有 Scrapy 项目提供 HTTP API,支持通过 URL 直接触发爬虫。
启动 Scrapyrt 服务并测试
准备示例项目(本地主机操作):
bash# 克隆 Scrapy 官方示例项目(quotesbot) git clone https://github.com/scrapy/quotesbot.git .
启动 Scrapyrt 服务:
bashdocker-compose up -d scrapyrt
通过 HTTP API 触发爬虫:
bash# 调用 scrapyrt API 爬取指定页面(需安装 jq 解析 JSON) curl -s 'http://localhost:9080/crawl.json?spider_name=toscrape-css&callback=parse&url=http://quotes.toscrape.com/&max_requests=5' | jq -c '.items[]'
debian:bookworm您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。





来自真实用户的反馈,见证轩辕镜像的优质服务