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)¶
- 页面分析:直接分析 HTML,所见即所得——和普通用户一样,页面上能看到什么就抓什么。例:B 站首页能看到视频封面和标题,就能从页面上获取相应内容。这是最朴素的方法。
- 数据接口分析:站在 Web 开发者角度思考页面如何加载——前端如何通过 Ajax 从后端/数据库取数据。如果能通过开发者工具观察到前后端通过 Ajax 传递数据的过程,就找到了网站的**数据接口**,可以直接通过接口获取信息。
- 课程讲解顺序:先讲页面分析,再讲数据接口。
页面分析的两种情况(约 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 章"第三方库与虚拟环境"相关。