scrapy项目结构中,scrapy.cfg为部署配置文件;myspider/是核心模块,含items.py(定义数据结构)、spiders/(存放spider类)、pipelines.py(数据处理)和settings.py(全局配置)。

要快速上手Scrapy开发,必须先搞清楚项目生成后每个文件和目录的实际作用,否则连数据该写进哪个文件、配置该改哪一行都找不到。
项目根目录与scrapy.cfg
运行 scrapy startproject myspider 后,会在当前目录生成一个 【myspider/】 文件夹和同级的 scrapy.cfg 文件。
scrapy.cfg 是纯配置文件,只在部署时起作用,本地开发几乎不用动它;它里面记录了项目模块名、部署目标等元信息,改错会导致 scrapy deploy 失败。
核心Python模块目录(myspider/)
进入 myspider/ 目录,这才是真正承载业务逻辑的Python包。
这个目录下必须有 __init__.py,否则Python无法识别为包;其他关键文件按用途分如下:
items.py:定义你要抓的数据长什么样
在这里用 class 声明结构化数据字段,比如爬新闻就要定义 title、author、publish_time 等属性。
这一步不能跳过——所有后续解析出的数据都必须是这里定义的 Item 类的实例,否则 Pipeline 会直接报错退出。
spiders/ 目录:爬虫逻辑的落脚点
所有自定义 Spider 类都放在这里,文件名任意,但类必须继承 scrapy.Spider。
每个 Spider 文件里至少要有 name(唯一标识)、allowed_domains(域名白名单)、start_urls(起始链接)三个属性,缺一不可。
如果 name 重复,运行 scrapy crawl xxx 时会报“Multiple spiders with same name”错误,且无法启动。
pipelines.py:数据落地前的最后一道关卡
Item 经过 Spider 解析后,会自动流入 pipelines.py 中定义的 pipeline 类方法里。
你可以在 process_item 方法中做去重、清洗、格式标准化,最后调用 yield item 让数据继续往下走,或直接 return None 丢弃该条数据。
注意:pipeline 默认不启用,必须在 settings.py 的 ITEM_PIPELINES 字典里显式注册,例如:ITEM_PIPELINES = {'myspider.pipelines.MyspiderPipeline': 300}
settings.py:全局行为开关总控台
这是整个项目的中枢配置文件,控制并发数、下载延迟、User-Agent、是否启用 Robots.txt、是否启用 Cookie 中间件等。
新手最容易踩的坑是忘了把 ROBOTSTXT_OBEY = True 改成 False,导致爬虫刚发出请求就被 403 拦截。
所有中间件、扩展、管道的启用开关,都集中在此处配置,改错一行可能让整个爬取流程静默失败。











