Scrapy 教程

Scrapy 目录结构


Scrapy 通过 scrapy startproject <project_name> 命令来在 project_name 文件夹下创建一个名为 project_name 的 Scrapy 项目。

默认的 Scrapy 项目结构

在开始对命令行工具以及子命令的探索前,首先了解一下 Scrapy 的项目的目录结构。

虽然可以被修改,但所有的 Scrapy 项目默认有类似于下边的文件结构:

scrapy.cfg
myproject/
    __init__.py
    items.py
    pipelines.py
    settings.py
    spiders/
        __init__.py
        spider1.py
        spider2.py
        ...

scrapy.cfg 存放的目录被认为是项目的根目录。该文件中包含 Python 模块名的字段,定义了项目的设置。

例如:

[settings]
default = myproject.settings

具体的各自文件分别是:

  1. scrapy.cfg

    项目的配置文件,现在可以先忽略;

  2. myproject

    该项目的 Python 模块,myproject 为项目名称;

  3. myproject/items.py

    项目中的 item 文件;

    Item 是保存爬取到的数据的容器;其使用方法和 Python 字典类似, 并且提供了额外保护机制来避免拼写错误导致的未定义字段错误;

    类似在 ORM 中做的一样,可以通过创建一个 scrapy.Item 类,并且定义类型为 scrapy.Field 的类属性来定义一个 Item;

  4. myproject/pipelines.py

    项目中的 pipelines 文件;

    Scrapy 提供了 pipeline 模块来执行保存数据的操作。在创建的 Scrapy 项目中自动创建了一个 pipeline.py 文件,同时创建了一个默认的 Pipeline 类。比如我们要把 item 提取的数据保存到 MySQL 数据库;

  5. myproject/settings.py

    项目的设置文件;

    settings.py 是 Scrapy 中比较重要的配置文件,里面可以设置的内容非常之多。比如我们在前面提到的在 pipelines.py 中编写了把数据保存到 MySQL 数据的 class,那么怎么样才能使得这个 class 执行呢?就可以在 settings 设置;

  6. myproject/spiders/

    放置spider代码的目录;

  7. myproject/middlewares.py

    中间件。