本站面向开发者与科研用户,提供开源镜像的搜索和下载加速服务。
所有镜像均来源于原始开源仓库,本站不存储、不修改、不传播任何镜像内容。

scrapyd Docker 镜像下载 - 轩辕镜像

scrapyd 镜像详细信息和使用指南

scrapyd 镜像标签列表和版本信息

scrapyd 镜像拉取命令和加速下载

scrapyd 镜像使用说明和配置指南

Docker 镜像加速服务 - 轩辕镜像平台

国内开发者首选的 Docker 镜像加速平台

极速拉取 Docker 镜像服务

相关 Docker 镜像推荐

热门 Docker 镜像下载

scrapyd
easypi/scrapyd

scrapyd 镜像详细信息

scrapyd 镜像标签列表

scrapyd 镜像使用说明

scrapyd 镜像拉取命令

Docker 镜像加速服务

轩辕镜像平台优势

镜像下载指南

相关 Docker 镜像推荐

用于部署和运行Scrapy爬虫的应用
9 收藏0 次下载activeeasypi镜像

scrapyd 镜像详细说明

scrapyd 使用指南

scrapyd 配置说明

scrapyd 官方文档

scrapyd 镜像文档

镜像概述与主要用途

scrapyd 镜像是一个基于 debian:bookworm 的 Docker 镜像,集成了 Scrapy 生态系统的多个最新稳定版工具,旨在提供便捷的环境用于部署和运行 Scrapy 爬虫。该镜像预安装了 8 个核心 Python 包,覆盖爬虫开发、部署、运行、监控、JavaScript 渲染等全流程需求,可作为 Scrapy 项目的基础镜像直接使用。

核心功能与特性

预安装的核心组件

镜像包含以下最新稳定版 Python 包:

  • scrapy==2.11.2:开源网络爬虫框架,用于快速提取网站数据
  • scrapyd==1.4.3:运行 Scrapy 爬虫的服务,支持通过 HTTP JSON API 部署和控制爬虫
  • scrapyd-client==v1.2.3:Scrapyd 客户端工具,提供 scrapyd-deploy 命令用于部署项目
  • scrapy-splash==0.9.0:Scrapy 与 Splash 集成工具,支持 JavaScript 渲染页面爬取
  • scrapyrt==v0.16.0:为现有 Scrapy 项目添加 HTTP API 的工具
  • spidermon==1.22.0:Scrapy 爬虫监控框架,用于构建爬虫运行状态监控
  • scrapy-poet==0.22.6:基于 web-poet 的 Page Object 模式实现,简化数据提取逻辑
  • scrapy-playwright==v0.0.38:使用 Playwright 作为下载器的 Scrapy 扩展,支持现代 JavaScript 渲染

基础环境

  • 基础镜像:debian:bookworm
  • 支持 Python 3.11+(Scrapy 2.0.0+ 已不再支持 Python 2.7)

使用场景与适用范围

  • Scrapy 项目开发与测试:快速搭建包含全套工具的开发环境,无需手动安装依赖
  • 爬虫部署与运行:通过 Scrapyd 服务管理爬虫生命周期,支持远程部署和调度
  • JavaScript 渲染需求:集成 scrapy-splash 和 scrapy-playwright,应对动态加载页面爬取
  • 爬虫监控与告警:通过 spidermon 实现爬虫运行状态监控和异常告警
  • HTTP API 集成:使用 scrapyrt 为现有爬虫项目提供 HTTP 接口,便于外部系统调用

详细使用方法与配置说明

Docker Compose 配置示例

以下 docker-compose.yml 定义了三个服务:scrapyd(后台服务)、scrapy(交互式开发)、scrapyrt(实时 API 服务):

yaml
version: "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

启动 Scrapyd 服务

bash
# 后台启动 scrapyd 服务
docker-compose up -d scrapyd

# 查看服务日志
docker-compose logs -f scrapyd

部署并运行爬虫项目

  1. 准备开发环境(本地主机操作):

    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
    
  2. 配置部署参数:编辑项目根目录下的 scrapy.cfg

    ini
    [settings]
    default = myproject.settings  # 项目默认配置
    
    [deploy]
    url = http://localhost:6800/  # Scrapyd 服务地址(与 docker-compose 映射一致)
    project = myproject  # 项目名称
    
  3. 部署项目到 Scrapyd

    bash
    # 部署项目
    scrapyd-client deploy
    
    # 调度爬虫运行
    curl http://localhost:6800/schedule.json -d project=myproject -d spider=myspider
    
  4. 访问 Scrapyd 管理界面:打开浏览器访问 http://localhost:6800,可查看爬虫状态、调度任务等。

  5. 获取爬取结果

    bash
    # 从容器中复制爬取的 items 数据到本地
    docker cp scrapyd_scrapyd_1:/var/lib/scrapyd/items .
    
    # 查看数据文件结构
    tree items
    # 示例输出:
    # items
    # └── myproject
    #     └── myspider
    #         └── ad6153ee5b0711e68bc70242ac***.jl  # 爬取结果文件(JSON Lines 格式)
    

作为交互式 Shell 运行 Scrapy

用于快速测试单文件爬虫脚本,无需完整项目结构。

示例:爬取 Stack Overflow 热门问题

  1. 创建爬虫脚本(本地主机操作):

    bash
    cat > stackoverflow_spider.py << _EOF_
    import scrapy
    
    class StackOverflowSpider(scrapy.Spider):
        name = 'stackoverflow'
        start_urls = ['[***]]
    
        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_
    
  2. 启动交互式 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

Scrapyrt 可为现有 Scrapy 项目提供 HTTP API,支持通过 URL 直接触发爬虫。

启动 Scrapyrt 服务并测试

  1. 准备示例项目(本地主机操作):

    bash
    # 克隆 Scrapy ***示例项目(quotesbot)
    git clone [***] .
    
  2. 启动 Scrapyrt 服务

    bash
    docker-compose up -d scrapyrt
    
  3. 通过 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
  • 预安装 Python 包版本
    • scrapy==2.11.2
    • scrapyd==1.4.3
    • scrapyd-client==v1.2.3
    • scrapy-splash==0.9.0
    • scrapyrt==v0.16.0
    • spidermon==1.22.0
    • scrapy-poet==0.22.6
    • scrapy-playwright==v0.0.38

用户好评

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

oldzhang的头像

oldzhang

运维工程师

Linux服务器

5

"Docker加速体验非常流畅,大镜像也能快速完成下载。"