查看全课大纲(第 21 / 101 节)
  1. 1.数据分析基本概念
  2. 2.学习数据分析的一般路线
  3. 3.数据分析的流程
  4. 4.数据类型
  5. 5.环境部署(1)
  6. 6.环境部署(2)
  7. 7.课程介绍
  8. 8.TXT文件操作
  9. 9.JSON文件操作
  10. 10.CSV文件操作
  11. 11.Excel文件操作
  12. 12.数据库及SQL常用语法
  13. 13.数据库基本操作
  14. 14.数据库多表连接
  15. 15.实战:欧洲职业足球数据库分析
  16. 16.爬虫简介
  17. 17.URL管理模块
  18. 18.网页下载模块
  19. 19.网页解析模块(1)
  20. 20.网页解析模块(2)
  21. 21.Scrapy简介
  22. 22.Scrapy使用步骤(1)
  23. 23.Scrapy使用步骤(2)
  24. 24.Scrapy使用步骤(3)
  25. 25.Scrapy使用步骤(4)
  26. 26.实战:获取国内城市空气质量指数数据
  27. 27.NumPy和SciPy介绍
  28. 28.多维数组
  29. 29.多维数组操作
  30. 30.NumPy的常用方法
  31. 31.向量化介绍
  32. 32.向量化及通用函数
  33. 33.实战:2016美国大选分析
  34. 34.数据结构-Series
  35. 35.数据结构-DataFrame
  36. 36.数据结构-Index
  37. 37.Series的索引操作
  38. 38.DataFrame的索引操作
  39. 39.索引操作总结
  40. 40.运算与对齐
  41. 41.函数应用操作(1) -- map
  42. 42.函数应用操作 (2) -- apply applymap
  43. 43.文件读写操作
  44. 44.排序操作
  45. 45.数据清洗--处理缺失数据
  46. 46.数据清洗--处理重复数据
  47. 47.数据清洗--替换数据
  48. 48.常用统计方法(1) -- describe quantile
  49. 49.常用统计方法(2) -- sum mean median count
  50. 50.常用统计方法(3) -- max min idxmax idxmin
  51. 51.常用统计方法(4) -- mad var std cumsum
  52. 52.实战:全球食品数据分析
  53. 53.层级索引
  54. 54.分组与聚合介绍
  55. 55.分组操作(1) -- GroupBy对象及常用聚合操作
  56. 56.分组操作(2) -- 自定义分组及聚合操作
  57. 57.透视表介绍
  58. 58.透视表操作
  59. 59.数据规整(1) -- 数据合并concat
  60. 60.数据规整(2) -- 数据连接merge
  61. 61.数据重构(3) -- 数据重构stack unstack
  62. 62.实战:互联网电影资料库分析
  63. 63.探索性数据分析EDA介绍
  64. 64.EDA的目的
  65. 65.EDA常用工具
  66. 66.Matplotlib绘图基本介绍
  67. 67.Matplotlib画布
  68. 68.散点图和柱状图的绘制
  69. 69.直方图的绘制
  70. 70.矩阵绘图
  71. 71.子图的使用
  72. 72.Matplotlib颜色、标记、线型
  73. 73.Matplotlib坐标刻度、标签、图例、标题
  74. 74.Seaborn介绍
  75. 75.数据集分布可视化(1) -- 单变量分布、双变量分布
  76. 76.数据集分布可视化(2) -- 变量关系可视化
  77. 77.类别数据可视化 -- 类别散布图、类别内数据分布、类别内统计图
  78. 78.交互式数据可视化工具Bokeh介绍
  79. 79.Bokeh绘制散点图、柱状图、盒子图、弦图
  80. 80.Bokeh绘制常用图形元素
  81. 81.3D绘图 -- mplot3d
  82. 82.3D曲线可视化
  83. 83.3D散点图可视化
  84. 84.3D柱状图可视化
  85. 85.Pandas绘图
  86. 86.实战:Lending Club借贷数据探索性分析及可视化
  87. 87.机器学习介绍及应用场景
  88. 88.机器学习建模介绍 (1) -- 分类
  89. 89.机器学习建模介绍 (2) -- 回归
  90. 90.机器学习建模介绍 (3) -- 聚类
  91. 91.机器学习分类
  92. 92.机器学习工具scikit-learn
  93. 93.使用scikit-learn的流程
  94. 94.数据集准备及划分
  95. 95.模型选择
  96. 96.数据预处理及特征工程
  97. 97.过拟合与欠拟合
  98. 98.模型调参介绍
  99. 99.模型调参方法
  100. 100.模型测试及评价
  101. 101.实战:通过移动设备行为数据预测性别和年龄

Scrapy简介

约 6 分钟

📺 正在播放小象学院官方高清录播(支持倍速与清晰度调节)

小象实战讲义 · Python数据分析实战

在前几节中,我们介绍了网络爬虫的几个基本模块,并讲解了如何使用原生Python实现一个爬虫。真实的爬虫项目通常会更加复杂,但其核心架构依然离不开URL管理、网页下载和数据解析这三个基本部分。为了更高效地构建和维护爬虫,开发者们创建了Scrapy这样的框架。本节将为你介绍Scrapy框架的基本概念、核心特性及其架构,帮助你理解如何使用框架来更好地实现爬虫功能。

💡 核心导读

  • 什么是Scrapy:一个开源的Python爬虫框架,用于抓取网站并提取结构化数据。
  • 核心优势:快速、强大、易扩展,内置多种数据抽取器,能自动处理编码,支持多种输出格式。
  • 架构概览:理解Scrapy框架中调度器、采集器、下载器、解析器和管道等核心组件的工作流程。
  • 框架定位:Scrapy将爬虫的通用逻辑封装为框架,开发者只需关注业务代码,即可高效完成爬取任务。

什么是Scrapy

Scrapy是一个开源的Python爬虫框架,专门用于抓取网站并从页面中提取结构化的数据。它的设计目标是让开发者能够快速、高效地编写和维护爬虫程序。

作为一个框架,Scrapy已经将爬虫的通用逻辑模块化并集成好了。它内部已经定义并实现了诸如URL管理、网页下载、数据解析等核心模块。开发者只需要在框架指定的位置(如特定的文件或类中)编写自己关心的业务逻辑代码,然后运行框架,Scrapy就能自动完成整个爬取流程。这极大地减少了重复性工作,提升了开发效率。

Scrapy的用途非常广泛,不仅可用于常规的数据爬取和数据挖掘,还可应用于网站监测、自动化测试等多个领域。其社区活跃,用户众多,许多知名公司都在使用Scrapy作为其爬虫解决方案。

Scrapy的核心特性

Scrapy之所以强大,得益于其一系列优秀的设计和内置功能:

  1. 内置数据抽取器:Scrapy内置了对CSS选择器、XPath和正则表达式的支持,开发者可以灵活地使用这些工具从复杂的HTML结构中精准地提取所需数据。
  2. 交互式控制台:框架提供了交互式控制台(Shell),方便开发者在编写解析规则时进行实时调试,快速验证选择器或XPath表达式是否正确。
  3. 灵活的输出格式:爬取到的结构化数据可以方便地保存为多种格式,如JSON、CSV或XML,便于后续的数据分析或导入数据库。
  4. 自动编码处理:Scrapy能够自动检测和处理网页的字符编码问题,减少了因编码错误导致的数据乱码风险。
  5. 高度可扩展:框架设计允许开发者通过编写中间件(Middleware)、管道(Pipeline)等组件来添加自定义功能,以满足特定的爬取需求。

这些特性共同使得Scrapy成为一个既“强大”又“易用”的爬虫框架,通过编写少量代码即可完成复杂的爬取任务。

Scrapy的架构与工作流程

Scrapy的整个爬取过程可以概括为下面这条核心数据流,其架构清晰地体现了爬虫从开始到结束的数据流转。理解这个流程,有助于我们更好地使用框架。

[待下载URL队列] -> [调度器] -> [采集器(Spider)] -> [下载器] -> [解析与Item封装] -> [管道(Pipeline)]
       ^                                                                      |
       |                                                                      v
       +--------------------------- [新URL反馈] ------------------------------+
  1. URL管理与调度: 爬虫起始于一个“待下载URL队列”。Scrapy的调度器(Scheduler) 负责从这个队列中取出下一个要爬取的URL。这对应着我们之前提到的URL管理模块。

  2. 启动采集模块: 调度器将取出的URL交给采集模块(Spider)。Spider是开发者编写业务逻辑的核心场所,它定义了如何发起请求、如何跟进链接以及如何解析响应。

  3. 下载网页内容: Spider将URL交给下载器(Downloader)。下载器负责向互联网发起HTTP请求,将目标网页的内容下载下来,并自动进行一些基础处理(如编码解码)。这对应着网页下载模块。

  4. 解析数据与封装: 下载器将得到的响应(Response)返回给Spider。Spider中编写的解析代码开始工作,使用内置的抽取器(CSS/XPath)从响应中提取出我们关心的数据。这些数据会被封装成Scrapy定义的Item对象。Item是一个结构化的数据容器,类似于我们自定义的Python类,用于保存提取到的字段。

  5. 数据后处理与持久化: 提取并封装好的Item对象会被发送到管道(Pipeline)。管道用于进行进一步的数据处理,例如数据清洗、验证,以及最重要的——将数据保存到数据库、CSV文件等持久化存储中。

  6. 链接跟进(循环): 在解析过程中,Spider可能会从当前页面中发现新的、需要爬取的URL。这些新的URL会被Spider提交回调度器,并放入“待下载URL队列”中,从而开启新一轮的爬取循环。

可以看到,虽然Scrapy将架构划分得更细致,引入了调度器、Item、管道等概念,但其核心思想依然是我们之前学习的URL管理、下载、解析这三个基本模块的深化和封装。框架的价值在于,它为我们搭建好了这个流水线,我们只需“填空”即可。

框架的价值与学习路径

通过本节介绍,你应该认识到,像Scrapy这样的框架,其核心价值在于封装通用逻辑,提供扩展接口,提升开发效率。它把爬虫工程师从重复造轮子的工作中解放出来,让大家能更专注于业务规则(如何解析特定网站)和数据价值本身。

由于本课程的核心环境锁定在Python标准库及数据分析核心套件(如NumPy, Pandas),并且Scrapy作为一个独立的、庞大的框架,其安装、项目创建、运行命令等实践环节较为复杂,不适合在本节有限的代码块中完整复现。

因此,本节的目标是帮助你建立对Scrapy框架的正确认知,理解其为何而生、如何工作。当你未来需要处理大规模、复杂的爬虫项目时,你会知道有Scrapy这样一个强大的工具可供选择,并能够依据本节所学的架构知识快速上手。

在接下来的课程中,我们将回归到使用Python标准库(如urllib, html.parser)及Pandas等工具进行数据获取和处理的实战路径上,确保你能扎实掌握数据分析全链路中的每一个基础环节。

📝 动手练一练

  1. 概念辨析:对比原生Python爬虫和Scrapy框架,分别列出它们的一个主要优势和劣势。
  2. 流程理解:假设你使用Scrapy爬取一个新闻网站,需要提取新闻标题、发布时间和正文。请描述数据从网页到最终保存为CSV文件,在Scrapy架构中会依次经过哪些核心组件?每个组件主要负责什么?
👉 点击查看参考答案

1. 概念辨析

  • 原生Python爬虫优势:灵活轻量,依赖少,适合快速编写一次性或结构非常简单的小爬虫。劣势:需要自行处理所有细节(如并发、去重、异常处理、编码),项目结构随着复杂度提升容易变得混乱,维护成本高。
  • Scrapy框架优势:提供了完整的、工业级的爬虫架构,内置了并发、调度、去重、中间件、管道等机制,项目结构清晰,易于扩展和维护,适合中大型爬虫项目。劣势:学习曲线较陡,对于极其简单的任务可能显得“重”,需要遵循框架的特定规则和项目结构。

2. 流程理解 数据流会依次经过以下核心组件:

  • 调度器(Scheduler):从初始URL开始,管理待爬取URL队列。
  • 采集器(Spider):定义爬取规则。它从调度器拿到URL,告诉下载器去下载,并编写解析函数。
  • 下载器(Downloader):根据Spider的指令,下载新闻网页的HTML内容,返回响应(Response)给Spider。
  • Spider的解析函数:在Spider内,使用XPath或CSS选择器从Response中提取新闻标题、发布时间、正文,并将这些数据填充到一个自定义的NewsItem对象中。
  • 管道(Pipeline):接收Spider发送过来的NewsItem对象。在管道中可以进行数据清洗(如去除正文空白字符),然后将清洗后的数据写入到CSV文件中。
  • (可选)中间件(Middleware):在整个过程中,请求发出前或响应返回后,可能会经过下载器中间件进行额外处理(如添加请求头、处理代理)。

本章小结

本节我们初步认识了Python爬虫领域的重要框架——Scrapy。我们了解到它并非要取代基础知识,而是在基础之上,为构建健壮、可维护的爬虫系统提供的一套“最佳实践”工具箱。

📋 行动清单

  • 理解框架价值:明确Scrapy的核心价值在于封装通用流程,提升开发效率,适用于复杂项目。
  • 掌握核心架构:能复述Scrapy中调度器、Spider、下载器、Item、管道这五个核心组件在数据流中的角色和作用。
  • 建立技术选型意识:在未来的项目中,能根据任务复杂度(简单脚本 vs. 生产级系统)在原生代码与成熟框架之间做出初步判断。

—— 小象教研组

配套资料 · 直接下载

课件、代码、数据集等配套资料全部免费,点击即可直接下载,无需分享或解锁。

  • 本节课件:Scrapy简介
    PDF · 282KB
    下载
  • 全套课件打包(第1-5章)
    ZIP · 12.8MB
    下载
  • 全套课件打包(第6-8章)
    ZIP · 15MB
    下载
  • 实战数据集:AppleStore 应用商城分析
    ZIP · 329KB
    下载
  • 实战数据集:女性服装电商分析
    ZIP · 2.8MB
    下载
  • Python 数据分析环境搭建指南
    PDF · 2MB
    下载
  • Scrapy 安装教程
    PDF · 12.7MB
    下载
  • 附加实战项目:AppleStore 应用商城数据分析
    ZIP · 0.3MB · ipynb + CSV 数据
    下载
  • 附加实战项目:银行电话营销数据分析
    ZIP · 0.4MB · ipynb + CSV 数据
    下载
  • 附加实战项目:女性服装电商评论数据分析
    ZIP · 2.7MB · ipynb + CSV 数据
    下载
  • 附加实战项目:美国化学学会杂志数据分析
    ZIP · 34.2MB · ipynb + SQLite 数据库
    下载