🐸 青蛙编程网
首页 / Python / 爬虫 / 1. 爬虫是什么

1. 爬虫是什么

这是什么:爬虫(Web Crawler / Web Scraper)是按规则自动访问网页、把需要的数据抠下来存起来的程序。你在网页上看到的每一段文字、每一张图片,本质上都是程序从某个网址(URL)下载回来的一段数据——爬虫只是把「人用浏览器看」换成「程序替你批量拿」。

为什么学:价格监控、舆情收集、比价榜单、给 AI 准备语料……数据在别人网站上躺着,手工复制粘贴既慢又漏;写一次爬虫脚本,以后一条命令随时重新采集。这一章先把原理吃透——原理懂了,框架只是帮你省代码。

如何用:先看浏览器和爬虫其实是同一个循环,再认识网页的两种形态,最后划清合规底线。

浏览器和爬虫,干的是同一件事

步骤 你用浏览器时 爬虫程序
1. 发请求 地址栏输入网址回车 代码向 URL 发 HTTP 请求
2. 收响应 服务器返回 HTML/JSON 程序拿到字符串/字节
3. 解析 浏览器渲染成页面 代码从文本里提取数据
4. 跳转 你点下一个链接 程序把新 URL 排进队列
5. 保存 数据显示在屏幕上 程序把数据写进文件/数据库

核心是第 4 步:爬虫自己"点链接"——把发现的新 URL 放进一个队列,再逐个请求,循环往复,直到队列空了。这就是「爬」字的由来:像蜘蛛一样顺着链接丝线爬满整个网站。

一个最小可跑的爬虫(不用装任何库)

Python 标准库就能发请求。存成 first_look.py 运行:

from urllib.request import urlopen

html = urlopen("https://quotes.toscrape.com/").read().decode("utf-8")
print(len(html))        # 页面一共多少个字符
print(html[:300])       # 看看前 300 个字符长什么样

你会看到:几万到几十万的一个数字,和一段以 <!DOCTYPE html> 开头的文本——这就是网页的「真身」。浏览器做的渲染(颜色、布局、字体)全是装饰,数据本来就藏在这段文本里。quotes.toscrape.com 是一个专门给人练爬虫的沙盒站,欢迎抓取。

网页的两种形态:静态与动态

形态 数据在哪 怎么拿到 典型场景
静态页面 就写在 HTML 文本里 请求 URL → 解析 HTML 即可 博客、文档、新闻列表
动态页面 HTML 是空壳,数据由 JS 再调接口取回 找到背后那个 JSON 接口,直接请求它 后台管理、信息流、评论区

判断方法:在页面上右键「查看网页源代码」(Ctrl+U),搜索你看到的某条数据——搜得到就是静态,搜不到就是动态。动态页别硬解析空壳 HTML,按 F12 打开开发者工具的 Network 标签,刷新页面,能找到返回 JSON 的接口(本教程第 3 章会实操一次)。

状态码:服务器的回话暗号

状态码 含义 爬虫该做什么
200 成功 正常解析
301 / 302 页面搬家了 跟着新地址走(requests 自动处理)
403 服务器拒绝你 多半是没带浏览器身份(下一章配 User-Agent)
404 页面不存在 从队列里丢弃这个 URL
429 请求太频繁 立即降速,加 sleep 间隔
500 服务器自己坏了 稍后重试,别甩锅自己的代码

合规底线:动手前必读

爬虫技术本身中性,但采集行为有边界,三条原则请背下来:

  1. 只抓公开数据:不需要登录、没有加密混淆、任何人打开浏览器都能看的内容;不破解、不绕权限、不碰个人隐私信息
  2. 遵守 robots.txt:在网站域名后加 /robots.txt(如 https://quotes.toscrape.com/robots.txt),这是站长写给爬虫的「预约须知」,声明了哪些路径欢迎爬、哪些谢绝
  3. 控制频率:加 time.sleep() 让请求之间有间隔,并发别开大——你的脚本一秒轰几十次,等于对人家服务器发起小规模攻击

记忆口诀:爬虫五步——请求、响应、解析、入队、存储;合规三条——公开、robots、慢慢爬。

本教程的技术栈地图

层次 代表工具 本教程第几章
发请求 requests / httpx 第 2 章
解析页面 BeautifulSoup4 / parsel 第 3 章
存数据 CSV / JSON / SQLite 第 4 章
全能框架 Scrapy 第 5 章
分布式框架 feapder 第 6 章
异步框架 Crawlee 第 7 章
JS 渲染(进阶) Playwright 第 7 章提及

动手改

  1. 把 html[:300] 改成 html[:1000],在文本里找找名言 "The world as we have created it..."——亲眼确认数据在 HTML 里
  2. 把 URL 换成 https://quotes.toscrape.com/robots.txt,读一读这个沙盒站的「预约须知」写了什么
  3. 试试一个不存在的地址(比如把域名手滑拼错),观察报错长什么样——下一章教你优雅地接住这些错

下一章:requests 抓第一个网页 🐸

📥 下载本章代码

ZIP 内含本章全部代码文件与说明,解压即用,与教程内容同步生成。