Scrapy项目开发教程大全

云婷酱_7199

云婷酱_7199

2026-08-18

383人浏览

原创

从零搭建可运行、可调试、可导出数据的scrapy项目需严格遵循步骤:创建标准结构、定义item字段、编写爬虫逻辑、配置pipeline、导出csv/json;任一环节出错将导致parse不触发或数据丢失。

scrapy项目开发教程大全 - php中文网

从零开始搭建一个可运行、可调试、可导出数据的Scrapy项目,需要严格遵循其目录结构和组件职责,跳过任意一步都可能导致parse函数不触发、item无法进入pipeline或爬虫直接静默退出。

创建标准项目结构

在终端中执行命令,生成带完整骨架的项目:
scrapy startproject mycrawler

这一步必须在空目录下执行,【如果当前目录已存在 scrapy.cfg 或同名 Python 包,命令会报错并中断】。执行后将生成 mycrawler/ 文件夹,内部包含 scrapy.cfg、mycrawler/ 子目录及 items.py、pipelines.py、settings.py、middlewares.py 和 spiders/ 等关键文件。

进入项目根目录:
cd mycrawler

定义待采集的数据结构

打开 mycrawler/items.py,删除默认注释,写入明确字段:

import scrapy
class BookItem(scrapy.Item):
  title = scrapy.Field()
  price = scrapy.Field()
  rating = scrapy.Field()
  url = scrapy.Field()

字段名必须与后续 parse 中 yield 的键名完全一致,大小写敏感。Scrapy 不校验字段是否存在,但拼错会导致该字段在 pipeline 中始终为 None。

生成并编写爬虫文件

在 spiders/ 目录下创建爬虫:
scrapy genspider bookspider books.toscrape.com

该命令自动生成 bookspider.py 并预填域名白名单、start_urls 和 parse 框架。注意:生成的 start_urls 默认是 http 协议,若目标站强制 https,需手动改为 https,否则请求会被 downloader 拦截并静默失败。

编辑 spiders/bookspider.py,替换 parse 方法为:

Scrapy 2.18.0
Scrapy 2.18.0

Scrapy 2.18.0 官方源码包下载,适合 Python 网页抓取、选择器解析、Item Pipeline 和异步请求调度项目升级。

下载

def parse(self, response):
  for book in response.css('article.product_pod'):
    item = BookItem()
    item['title'] = book.css('h3 a::attr(title)').get()
    item['price'] = book.css('p.price_color::text').re_first(r'(\d+\.\d+)')
    item['rating'] = book.css('p.star-rating::attr(class)').re_first(r'star-(\w+)')
    item['url'] = response.urljoin(book.css('h3 a::attr(href)').get())
    yield item
  next_page = response.css('li.next a::attr(href)').get()
  if next_page:
    yield response.follow(next_page, callback=self.parse)

启用并配置数据管道

打开 mycrawler/pipelines.py,在 class BookPipeline 中实现 process_item 方法:

def process_item(self, item, spider):
  if not item.get('title') or not item.get('price'):
    raise DropItem(f"Missing title or price in {item}")
  return item

然后打开 settings.py,取消 ITEM_PIPELINES 字典的注释,并填入:

ITEM_PIPELINES = {
  'mycrawler.pipelines.BookPipeline': 300,
}

【此处数字 300 不可省略,且必须为整数;若写成 '300' 字符串或留空,pipeline 将完全不生效】

运行爬虫并导出 CSV 数据

方法一:命令行直接导出(适合快速验证)
scrapy crawl bookspider -o books.csv

方法二:启用内置 CSV 导出器(需修改 settings.py)
FEEDS = {
  'books.csv': {'format': 'csv', 'overwrite': True}
}

方法三:导出 JSON(保留嵌套结构)
scrapy crawl bookspider -o books.json

执行后,CSV 文件将按字段顺序生成表头,空字段显示为 null;JSON 则以数组形式保存每条 item。若未生成文件,请检查终端是否输出 “Saved file” 提示——没有该提示说明爬虫未 yield 任何 item,大概率是 CSS 选择器写错或网站结构已变更。

相关专题

更多
免费爬虫工具有哪些
免费爬虫工具有哪些

免费爬虫工具有Scrapy、Beautiful Soup、ParseHub、Octoparse、Webocton Scriptly、RoboBrowser和Goutte。更多关于免费爬虫工具的问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

2023.11.10

3913

9

AI视频生成软件推荐
AI视频生成软件推荐

本专题汇总了当前主流的AI视频生成软件推荐与排行榜单,涵盖seko、AniShort、剧云、Lovart、LiblibAI及立刻mv等热门工具。同时整理了各软件在文生视频、图生视频、时长限制、画质表现及免费额度等方面的差异对比,助您快速选对适合创作需求的AI视频生成工具。

2026.09.16

140

9

ai生成视频的工具免费版合集
ai生成视频的工具免费版合集

本专题汇总了当前免费AI生成视频工具的排行榜与推荐清单,涵盖seko、讯飞智作、AniShort及剧云、Lovart等多模型集成平台。同时整理了各工具的免费额度、输出时长、水印政策及适用场景差异,助您快速选择合适工具开启AI视频创作。

2026.09.16

60

10

Pandas时间序列分析与可视化报表
Pandas时间序列分析与可视化报表

本专题整理Pandas日期转换、时间索引、重采样、滚动窗口、时区处理、plot绘图、Styler表格样式和报表输出方法。

2026.09.16

60

23

Pandas数据筛选索引与清洗处理
Pandas数据筛选索引与清洗处理

本专题整理Pandas中的loc、iloc、条件筛选、query查询、缺失值处理、重复值删除、类型转换和字符串列清洗方法。

2026.09.16

40

25

Pandas数据读取导入与文件导出处理
Pandas数据读取导入与文件导出处理

本专题整理Pandas读取CSV、Excel、JSON、SQL、Parquet等文件的方法,以及to_csv、to_excel、to_sql和to_parquet等常用数据导出流程。

2026.09.16

40

27

GDB怎么设置断点
GDB怎么设置断点

本专题介绍GDB按照函数名、源代码行号和文件位置设置断点的方法,详细说明run、continue、next、step等命令的配合使用,帮助定位程序崩溃、逻辑异常及代码未按预期执行的问题。

2026.09.11

360

28

GDB怎么查看变量值
GDB怎么查看变量值

本专题介绍GDB调试过程中查看变量值的具体方法,涵盖局部变量、函数参数、数组、结构体和指针内容查询,同时整理变量持续显示、格式化输出及无法读取变量时的排查思路。

2026.09.11

120

22

GDB C++程序怎么调试
GDB C++程序怎么调试

本专题围绕GDB调试C++程序的实际过程,详细说明程序编译、调试器启动、命令行参数传入、断点命中和程序继续运行等步骤,并介绍条件断点、临时断点和观察点的设置方法,方便开发者跟踪复杂代码的执行状态。

2026.09.11

120

20

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Scrapy 官方文档与教程
Scrapy 官方文档与教程

共0课时 | 0人学习

Python Scrapy 网络爬虫实战视频教程
Python Scrapy 网络爬虫实战视频教程

共16课时 | 5.9万人学习