查看全课大纲(第 22 / 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使用步骤(1)

约 6 分钟

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

Scrapy 使用步骤(一):框架安装与项目创建

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

在上一节中,我们了解了Scrapy框架的基本架构和核心组件。从本节开始,我们将正式进入Scrapy的实战学习,一步步掌握如何使用这个强大的框架来构建网络爬虫。作为起点,本节将首先解决Scrapy的安装问题,并学习如何创建一个符合Scrapy规范的爬虫项目,为后续编写爬虫主体代码打下基础。

💡 核心导读

  • 安装与验证:学习如何在Anaconda环境中安装Scrapy框架,并使用scrapy bench命令验证安装是否成功。
  • 开发五步法:了解使用Scrapy进行爬虫开发的完整流程,包括创建工程、定义Item、编写Spider、配置Pipeline和执行爬虫。
  • 项目创建:掌握使用scrapy startproject命令创建新项目的方法,理解Scrapy项目默认的目录结构及其作用。
  • 目录结构解析:熟悉新创建的Scrapy项目中各主要文件和文件夹的功能,如items.py、pipelines.py、settings.py和spiders/目录。

1. Scrapy框架的安装与验证

Scrapy是一个功能强大且独立的网络爬虫框架。与Pandas、NumPy等库不同,它没有集成在Anaconda的默认发行版中,需要我们手动安装。

1.1 安装命令

在已安装Anaconda的环境下,可以通过以下命令安装Scrapy:

# 注意:此命令为演示目的,实际安装请在命令行中执行
# 讲义环境已锁定,不包含scrapy,此处仅作语法展示
# 实际安装命令:conda install -c conda-forge scrapy
print("安装命令:conda install -c conda-forge scrapy")
安装命令:conda install -c conda-forge scrapy

这条命令通过conda-forge频道安装Scrapy。如果你已经按照课程要求成功安装了Anaconda,那么执行此命令安装Scrapy通常不会遇到问题。

1.2 验证安装

安装完成后,我们需要验证Scrapy是否安装成功。Scrapy提供了一个简单的基准测试命令scrapy bench。

# 注意:此命令为演示目的,实际验证请在命令行中执行
# 讲义环境已锁定,不包含scrapy,此处仅作语法展示
# 实际验证命令:scrapy bench
print("验证命令:scrapy bench")
print("如果安装成功,命令行会启动一个本地测试服务器并显示爬取状态,无报错信息。")
验证命令:scrapy bench
如果安装成功,命令行会启动一个本地测试服务器并显示爬取状态,无报错信息。

运行scrapy bench后,它会启动一个本地测试服务器并尝试进行爬取。即使它没有实际爬取到任何数据(显示爬取了0个item),但只要命令行没有抛出任何错误信息,就说明Scrapy框架本身已经正确安装并可以正常运行了。

2. Scrapy爬虫开发五步法

在使用Scrapy进行开发时,通常遵循一个清晰的五步流程。理解这个流程有助于我们建立对Scrapy项目开发的整体认知。

  1. 创建工程:Scrapy是一个框架,创建项目时必须遵循其规定的目录结构和文件组织规则。
  2. 定义Item(可选):Item用于构造和封装爬取到的数据对象。你可以选择将数据封装在一个Item类中,也可以使用自定义的字典或列表来存储。这一步是可选的。
  3. 编写Spider:这是爬虫的核心主体。在这里,你需要定义起始URL、如何跟踪链接、以及如何解析网页内容以提取所需数据。
  4. 编写与配置Pipeline(可选):Pipeline用于处理爬取后的结果。例如,进行数据清洗、验证、去重,或者将数据保存到文件、数据库等。这一步也是可选的。
  5. 执行爬虫:将前面编写好的代码整合起来,执行爬虫命令,Scrapy框架便会自动完成网页下载、解析、数据处理等一系列操作。

核心要点:第二步和第四步(Item和Pipeline)是可选的。对于简单的爬虫任务,你可以直接在Spider中解析并保存数据。但对于结构复杂或需要后续处理的项目,使用Item和Pipeline能使代码更清晰、更易于维护。

3. 创建Scrapy工程

安装好Scrapy后,我们就可以使用它提供的命令行工具来创建第一个爬虫项目了。

3.1 创建命令

创建Scrapy项目的命令格式如下:

# 注意:此命令为演示目的,实际创建请在命令行中执行
# 讲义环境已锁定,不包含scrapy,此处仅作语法展示
# scrapy startproject <project_name>
print("创建项目命令:scrapy startproject tutorial")
print("其中 'tutorial' 是项目名称,可以替换为任意你喜欢的名字,如 'my_spider', 'test_project' 等。")
创建项目命令:scrapy startproject tutorial
其中 'tutorial' 是项目名称,可以替换为任意你喜欢的名字,如 'my_spider', 'test_project' 等。
  • scrapy startproject 是Scrapy框架自带的固定命令。
  • 第三个参数是你的项目名称,例如示例中的 tutorial。你可以将其改为任何合法的名称,如 my_first_spider。

3.2 项目目录结构解析

执行创建命令后,Scrapy会在当前目录下生成一个以项目名命名的文件夹,其中包含了一套预设好的文件和目录结构。

假设我们在命令行中执行了 scrapy startproject tutorial2,将会生成如下结构(此处用文本模拟):

tutorial2/
├── scrapy.cfg               # 项目部署配置文件
└── tutorial2/               # 项目Python模块
    ├── __init__.py
    ├── items.py            # 定义Item数据结构
    ├── middlewares.py      # 项目中间件定义(高级用法)
    ├── pipelines.py        # 定义数据处理Pipeline
    ├── settings.py         # 项目配置文件
    └── spiders/            # 存放Spider代码的目录
        ├── __init__.py
        └── ...             # 后续创建的Spider文件将放在这里

各主要文件/目录功能说明:

  • items.py:用于定义爬取的数据结构。你可以在这里创建Item类,规定要爬取的每个数据项有哪些字段(如标题、链接、发布时间等)。
  • pipelines.py:用于编写数据处理管道。爬虫解析出的Item对象会依次通过这里定义的管道,进行清洗、验证、存储等操作。
  • settings.py:项目的全局配置文件。可以在这里设置并发请求数、下载延迟、User-Agent、启用哪些Pipeline等。
  • spiders/ 目录:这是放置爬虫主体代码的地方。我们后续编写的每一个Spider类,都会以独立的Python文件形式创建在这个目录下。创建项目时,这个目录是空的。
  • scrapy.cfg:通常用于将项目部署到Scrapyd(一个用于运行Scrapy爬虫的服务)时的配置。

创建成功后,命令行通常会给出提示,并告诉你下一步可以输入 cd tutorial2 进入项目目录,然后使用 scrapy genspider 命令来生成一个Spider模板(这将在下一节详细讲解)。

📝 动手练一练

  1. 概念辨析:Scrapy开发流程中的“定义Item”和“配置Pipeline”步骤被标记为“可选”。请结合你的理解,简述在什么情况下你会选择使用它们?在什么简单的场景下可能暂时不用?
👉 点击查看参考答案

参考答案:

  • 使用Item和Pipeline的场景:当爬取的数据结构复杂、字段多且固定时,使用Item类能使数据结构更清晰、易于管理和类型检查。当需要对爬取的数据进行一系列标准化处理(如清洗、去重、格式转换)或存储到特定介质(数据库、JSON文件)时,使用Pipeline可以将处理逻辑模块化,使Spider代码更专注于解析。
  • 暂时不用的简单场景:对于一次性、结构极其简单(如只爬取一个标题)的爬虫,或者快速原型验证时,可以直接在Spider的解析函数中将数据打印出来或保存到一个简单的字典/列表中,跳过Item和Pipeline以快速实现功能。
  1. 流程推演:如果我们在 /home/user/projects 目录下执行了 scrapy startproject news_crawler 命令。请描述命令执行后: a) 系统会在哪个路径下创建什么文件夹? b) 我们接下来应该使用什么命令进入项目根目录? c) 我们将在哪个子目录下创建第一个爬虫文件?
👉 点击查看参考答案

参考答案: a) 系统会在 /home/user/projects 目录下创建一个名为 news_crawler 的文件夹。 b) 接下来应该使用命令:cd news_crawler c) 我们将在 news_crawler/spiders/ 这个子目录下创建第一个爬虫文件(实际是通过在项目根目录运行 scrapy genspider 命令自动生成)。

本章小结

本节我们迈出了使用Scrapy框架的第一步。我们首先学习了如何在Anaconda环境中安装Scrapy,并通过 scrapy bench 命令验证安装。接着,我们掌握了Scrapy爬虫开发的完整五步流程,从宏观上理解了各环节的职责。最后,我们重点实践了使用 scrapy startproject 命令创建新项目,并详细解析了Scrapy项目默认的目录结构,明确了 items.py、pipelines.py、settings.py 以及最重要的 spiders/ 目录各自的作用。

📋 行动清单

学完本节,你可以立即:

  • 在你的本地Anaconda环境中,尝试执行 conda install -c conda-forge scrapy 来安装Scrapy框架。
  • 在命令行中运行 scrapy bench,观察输出,确认框架安装成功(无报错)。
  • 使用 scrapy startproject 命令创建一个练习用的项目(例如 my_practice),并浏览其生成的目录结构,对照讲义理解每个文件的作用。

—— 小象教研组

配套资料 · 直接下载

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

  • 本节课件:Scrapy使用步骤(1)
    PDF · 173KB
    下载
  • 全套课件打包(第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 数据库
    下载