查看全课大纲(第 16 / 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.实战:通过移动设备行为数据预测性别和年龄

爬虫简介

约 7 分钟

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

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

在上一课中,我们学习了如何从本地文件(如CSV、Excel、JSON)和数据库中获取数据。然而,在现实世界中,大量有价值的数据并非静态地存放在本地,而是实时更新于互联网之上。本课我们将开启网络数据获取的大门,学习如何编写程序自动从网页上抓取所需信息,即“网络爬虫”。掌握这项技能,你将能够自动化地收集天气、商品价格、新闻资讯等动态数据,为后续的数据分析工作提供源源不断的“原料”。

💡 核心导读

  • 什么是爬虫:理解网络爬虫作为“自动获取互联网信息的程序”的本质及其应用场景。
  • 为何需要爬虫:认识手动获取网络数据的低效性,以及自动化程序在数据采集中的巨大优势。
  • 爬虫基本架构:掌握构成一个爬虫程序的三个核心模块:URL管理、网页下载和网页解析,以及它们之间的协同工作流程。

什么是网络爬虫?

想象一下,你需要持续追踪某个城市过去一年每天的天气情况。如果手动操作,你需要每天访问天气网站,点击日期链接,查看并记录数据。这不仅枯燥、耗时,而且极易出错。如果数据需要追溯历史或预测未来,手动操作更是难以为继。

网络爬虫(Web Crawler/Spider) 正是为了解决这个问题而生的。简单来说,它是一个能够自动访问互联网、下载网页内容并从中提取特定信息的程序或框架。它模拟了人类用户点击链接、浏览网页的行为,但以程序化的方式,实现了高效、准确、大规模的数据采集。

爬虫的核心价值在于利用互联网数据进行后续的分析与产品开发。例如,电商公司通过爬虫监控竞品价格,新闻机构用它聚合全网资讯,数据分析师则用它收集研究所需的各类公开数据。获取到的数据可以保存到本地文件(如CSV、JSON)或数据库中,与我们上一课学习的本地数据处理技术无缝衔接。

爬虫的基本架构

一个典型的网络爬虫,无论其复杂程度如何,其核心工作流程都可以抽象为三个相互协作的模块。理解这个架构,是编写或使用任何爬虫框架的基础。

URL 管理模块

这个模块负责管理所有待爬取和已爬取的网页地址(URL)。它的核心职责包括:

  • 计划爬取:维护一个待爬取的URL队列。例如,当你要爬取一个电商网站上关于“iPhone”的所有搜索结果时,初始URL可能是第一页的链接。解析后会发现第二页、第三页的链接,这些新发现的URL会被添加到待爬取队列中。
  • 去重与状态管理:确保同一个URL不会被重复爬取,以节省资源和避免重复数据。同时,它还需要处理失效的URL(例如,因网站改版而无法访问的链接),将其从队列中移除。

可以把URL管理模块想象成一个智能的“任务调度中心”,它决定接下来要去访问哪个网页,并确保任务不重复、不遗漏。

网页下载模块

当URL管理模块分配了一个待爬取的URL后,网页下载模块便开始工作。它的任务非常直接:访问该URL,并将对应的网页内容(通常是HTML代码)下载到本地内存或临时存储中。

这个过程类似于你在浏览器地址栏输入网址并按下回车后,浏览器向服务器发送请求并接收响应的过程。网页下载模块就是程序中的“浏览器引擎”,负责完成网络通信,获取原始的网页数据。

网页解析模块

获取到网页的原始HTML内容后,我们需要从中提取出感兴趣的信息。这就是网页解析模块的工作。

浏览器之所以能将HTML代码渲染成我们看到的图文并茂的网页,是因为它内置了解析HTML规则(标签、样式、脚本)的引擎。爬虫的解析模块做的事情类似,但它不负责渲染显示,而是按照HTML的结构规则,定位到特定信息所在的标签位置,并将其中的文本、属性等内容抽取出来。

例如,在一个商品页面中,我们只关心价格信息。解析模块就需要在复杂的HTML代码中找到包裹价格的特定标签(如一个<span class="price">),然后将其中的文本“¥5999”提取出来。

关键循环:解析模块在提取目标数据的同时,常常会发现当前页面中包含指向其他页面的链接(例如“下一页”、“相关商品”)。这些新发现的URL会被反馈给URL管理模块,从而开启新一轮的“下载->解析”循环,直到所有感兴趣的数据都被采集完毕。

URL 管理模块 -> (提供URL) -> 网页下载模块 -> (提供HTML) -> 网页解析模块
     ^                                                           |
     |                                                           | (发现新URL)
     +-----------------------------------------------------------+

这三个模块构成了爬虫的基本工作流,形成了一个高效的自动化数据采集闭环。

📝 动手练一练

  1. 概念辨析:请简述网页下载模块和网页解析模块的核心区别。一个常见的误解是“下载模块就能直接得到数据”,这种说法错在哪里?
👉 点击查看参考答案

参考答案:

  • 核心区别:网页下载模块负责网络通信,其输出是网页的原始文本(HTML/JSON等),可以看作获取“原材料”。网页解析模块负责内容分析,其输入是原始文本,输出是结构化、有意义的数据,可以看作对“原材料”进行加工和提取。
  • 误区澄清:“下载模块就能直接得到数据”这种说法是错误的,因为它混淆了“数据载体”和“数据本身”。下载得到的是包含数据的HTML文档(载体),而我们需要的数据(如价格、标题)是嵌入在这个文档结构中的。必须通过解析模块理解HTML的标签结构,才能准确定位并提取出目标数据。
  1. 流程推演:假设你要爬取一个新闻网站“今日热点”板块下所有文章的标题和链接。请描述爬虫三个模块在此场景下的具体工作步骤。
👉 点击查看参考答案

参考答案:

  1. URL管理模块:初始队列中包含“今日热点”板块的主页URL。
  2. 网页下载模块:访问该主页URL,将整个页面的HTML内容下载下来。
  3. 网页解析模块:
    • 解析下载的HTML,定位所有文章标题和链接所在的HTML元素(例如,每个文章标题都在一个<a class="news-title">标签内)。
    • 提取数据:将每个<a>标签的文本(标题)和href属性值(链接)提取出来,保存为结构化数据(如列表或字典)。
    • 发现新URL:同时,解析模块可能会发现“下一页”或“加载更多”的链接。将这些新URL提交给URL管理模块,加入待爬取队列。
  4. 循环:URL管理模块取出下一个URL(如“第二页”),重复步骤2和3,直到没有新的文章页可爬取。

本章小结

本节我们揭开了网络爬虫的神秘面纱。我们认识到,爬虫并非高深莫测的黑科技,而是一个旨在自动化、程序化地获取网络公开信息的实用工具。其核心价值在于将人从重复、低效的手动数据收集工作中解放出来。

我们重点剖析了爬虫的三个基本架构模块:URL管理、网页下载和网页解析。这三个模块各司其职又紧密协作,构成了爬虫从“发现目标”到“获取原料”再到“提炼数据”的完整工作流。理解这个流程,是后续各节逐个学习这三大模块具体实现的坚实基础。

📋 行动清单

学完本节,你可以立即开始:

  • 在脑海中复述爬虫三大模块的名称及其核心功能。
  • 打开一个你常浏览的网站(如电商、新闻),用“检查元素”功能查看网页HTML结构,思考如果要爬取某个信息(如商品价格),它可能藏在哪个标签里。
  • 预习下一节:想一想「URL 管理模块」要解决什么问题?如果爬虫没有它会遇到哪些麻烦?

—— 小象教研组

配套资料 · 直接下载

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

  • 本节课件:爬虫简介
    PDF · 227KB
    下载
  • 第3章配套代码包:爬虫与 Scrapy 工程
    ZIP · 23KB
    下载
  • 全套课件打包(第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 数据库
    下载