跳转至

13.1 Web分析与爬虫——爬虫的基本逻辑

内容梗概

本节课是"Web分析与爬虫"系列的开篇,与上一周的 Web 开发课程形成对应:之前讲网站是怎么开发的,这节课讲面对不同开发技术的网站如何获取并分析其内容。老师先回顾了浏览器访问网页的完整过程,指出爬虫的本质是模仿正常用户访问网站并分析获取到的内容,并给出用 requests + BeautifulSoup 两个库写爬虫的基本分工。随后引出抓取目标网站的两种思路——页面分析与数据接口,其中页面分析又分静态网站抓取和动态网站抓取两种情况。最后简要提到与网站开发者的"对抗"(封 IP、登录保护等)以及遵守网络安全法的提醒。

知识点详解

爬虫的本质与浏览器工作过程(约 00:00–02:20)

  • 爬虫本质上是在**模仿一个正常用户访问网站的过程**,并分析获取到的内容。
  • 回顾浏览器上网过程:在浏览器输入地址(如 CUC 官网)回车,浏览器发送 HTTP 请求、接收响应;浏览器内部有专门模块负责发送请求/接收响应,另有渲染模块把页面渲染成用户可见的形式。
  • 用 Python 写爬虫时,相当于把"浏览器"替换成在 Python 解释器中执行的一段源代码:不再有渲染需求,只需要拿到内容并解析。

写爬虫的两个核心库(约 02:25–04:30)

  • HTTP 通信部分(二选一):
  • requests:第三方库,可读性好,老师个人推荐。
  • urllib:Python 内置库,功能相当。
  • 作用:负责处理 HTTP 协议的请求—响应过程,拿到文本形式的 HTML。
  • HTML 解析部分:
  • BeautifulSoup:第三方库,用于解析 HTML 页面内容,找到所需的特定部分并记录下来。
  • 爬虫不需要渲染页面,只需解析 HTML 并提取目标内容。

抓取目标网站的两种方式(约 04:50–07:35)

  1. 页面分析:直接分析 HTML,所见即所得——和普通用户一样,页面上能看到什么就抓什么。例:B 站首页能看到视频封面和标题,就能从页面上获取相应内容。这是最朴素的方法。
  2. 数据接口分析:站在 Web 开发者角度思考页面如何加载——前端如何通过 Ajax 从后端/数据库取数据。如果能通过开发者工具观察到前后端通过 Ajax 传递数据的过程,就找到了网站的**数据接口**,可以直接通过接口获取信息。
  3. 课程讲解顺序:先讲页面分析,再讲数据接口。

页面分析的两种情况(约 07:35–09:40)

  • 静态网站抓取:浏览器(或爬虫)一访问,服务器直接返回完整的 HTML 文件。即使后端用了 CGI 等服务端渲染技术,只要最终返回完整 HTML 串,就可以当作静态网站分析。
  • 动态网站抓取:服务器返回的 HTML 是残缺的,部分内容需浏览器运行 JS 代码,由 JS 通过 Ajax 再与服务器交互才能得到完整页面。这种情况也有办法抓取(后续课程给示例)。

对抗与法律提醒(约 09:40–10:25)

  • 爬虫本质上是与网站开发者的对抗;更进一步的对抗包括封 IP、关键资源的登录保护等,后续会引申讲解。
  • 强调:课程内容纯技术交流,网络安全法一定要遵守。

示例与演示

本节课以概念和逻辑梳理为主,未实际写代码。课堂中以 B 站首页(能看到视频封面、标题)为例说明"页面分析"的直观性;用"浏览器访问 CUC 官网发 HTTP 请求"回顾上一节课的 Web 逻辑,并将其与"Python 源代码 + 解释器"的爬虫架构做对照演示(左侧示意图中把浏览器换成 Python 解释器执行源代码)。

重点与难点

  • 重点:爬虫两步分工——requests(或内置 urllib)负责 HTTP 通信拿到 HTML,BeautifulSoup 负责解析 HTML 提取内容。
  • 重点:判断目标网站属于哪种情况(静态/动态/数据接口),决定用什么抓取策略。
  • 易错点:静态与动态的区别不在于后端是否"动态渲染",而在于**返回的 HTML 是否完整**——服务端渲染(CGI 等)只要返回完整 HTML 也算静态可抓。
  • 老师提醒抓取过程是对抗过程,务必遵守网络安全法。

关联内容

  • 紧承上一周(第 12 章前后)的 Web 开发课程:前端/后端、Ajax、开发者工具、静态网站与动态网站的概念都是前置知识,"先讲 Web 开发再讲爬虫"正是为此铺垫。
  • 后续课程依次展开本课提出的框架:13.2 页面分析与 CSS 选择器、13.3 静态页面爬取示例、13.4 动态页面爬取示例、13.5 数据接口爬取示例。
  • 涉及第三方库安装(pip),与第 10 章"第三方库与虚拟环境"相关。