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
具体的各自文件分别是:
- scrapy.cfg:
项目的配置文件,现在可以先忽略;
-
myproject:
该项目的 Python 模块,myproject 为项目名称;
-
myproject/items.py:
项目中的 item 文件;
Item 是保存爬取到的数据的容器;其使用方法和 Python 字典类似, 并且提供了额外保护机制来避免拼写错误导致的未定义字段错误;
类似在 ORM 中做的一样,可以通过创建一个
scrapy.Item
类,并且定义类型为scrapy.Field
的类属性来定义一个 Item; -
myproject/pipelines.py:
项目中的 pipelines 文件;
Scrapy 提供了 pipeline 模块来执行保存数据的操作。在创建的 Scrapy 项目中自动创建了一个 pipeline.py 文件,同时创建了一个默认的 Pipeline 类。比如我们要把 item 提取的数据保存到 MySQL 数据库;
-
myproject/settings.py:
项目的设置文件;
settings.py
是 Scrapy 中比较重要的配置文件,里面可以设置的内容非常之多。比如我们在前面提到的在 pipelines.py 中编写了把数据保存到 MySQL 数据的 class,那么怎么样才能使得这个 class 执行呢?就可以在 settings 设置; -
myproject/spiders/:
放置spider代码的目录;
-
myproject/middlewares.py:
中间件。