作为每天刷知乎的“重度用户”,我发现热榜藏着太多干货——从社会热点到职场技巧,甚至还有隐藏的“冷知识”。但每次翻热榜总在想:能不能把这些内容存下来,闲了慢慢看?作为零基础学爬虫的过来人,我整理了这篇保姆级教程:不用懂复杂原理,跟着复制代码、改参数,10分钟就能爬下知乎热榜,还能存成表格随时看。
一、先搞明白:爬知乎热榜,我们要做啥?
新手学爬虫,最怕“上来就被一堆术语吓跑”。其实核心就3件事:
- 找到热榜在哪:知乎热榜页面是
https://www.zhihu.com/hot,打开就能看到一条条热榜内容; - 拿到页面数据:用代码模拟浏览器访问这个页面,把热榜的标题、热度、链接抓下来;
- 存成能看的格式:把抓到的数据存成CSV表格(像Excel一样),方便后续翻看。
别担心反爬!知乎热榜是公开数据,只要模拟正常浏览器访问,基本不会被封,零基础也能搞定。
二、环境准备:3分钟装完所有工具
爬知乎热榜只需要2个工具,小白也能一键安装:
- Python:写爬虫的“语言”,官网(https://www.python.org/)下载3.8以上版本,安装时勾选“Add Python to PATH”(重要!否则后续找不到程序);
- 必备库:发送请求的
requests和解析页面的beautifulsoup4,安装方法:
打开电脑的“命令提示符”(Win+R输入cmd),复制下面的命令,回车:
pip install requests beautifulsoup4
安装完可以验证下:打开Python(开始菜单找“Python 3.x”),输入import requests和import bs4,没报错就是装好了。
三、手把手写代码:从0到1爬取热榜
1. 第一步:用代码“打开”知乎热榜页面
就像用浏览器访问网页一样,我们用requests库发送请求,拿到页面内容。代码如下(直接复制,注意缩进!):
import requests # 发送网络请求的库
# 1. 知乎热榜的URL
url = "https://www.zhihu.com/hot"
# 2. 关键!加请求头,假装是浏览器访问(不然知乎会拒绝)
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36"
}
# 3. 发送请求,获取页面内容
response = requests.get(url, headers=headers)
# 4. 打印下状态码,200表示成功(不是200就看后面的“踩坑指南”)
print("请求状态码:", response.status_code)
新手必看:
User-Agent是“浏览器身份证”,知乎会通过它判断是不是爬虫。你可以用自己的浏览器信息:打开知乎热榜→按F12→点“Network”→刷新页面→随便点一个请求→在“Headers”里找“User-Agent”,复制过来替换掉上面的内容;- 如果状态码是403,说明请求头没写对,换一个
User-Agent试试;如果是503,可能是网络问题,多试几次。
2. 第二步:从页面中“挑出”我们要的热榜数据
拿到页面内容后,需要从中提取热榜的标题、排名、热度、链接。这一步用BeautifulSoup解析,先分析页面结构:
打开知乎热榜→按F12→点左上角“小箭头”→鼠标点到第一条热榜标题上,会看到热榜内容都在div class="HotItem-content"里:
- 排名:
div class="HotItem-rank"(比如“1.”“2.”); - 标题:
a class="HotItem-title"(热榜的标题文字); - 热度:
div class="HotItem-metrics"(比如“100万热度”); - 链接:标题对应的
a标签的href属性(点击能打开具体内容)。
知道结构后,写解析代码:
from bs4 import BeautifulSoup # 解析页面的库
# 1. 解析页面内容(用lxml解析器,速度快)
soup = BeautifulSoup(response.text, "lxml")
# 2. 找到所有热榜条目(每个条目对应一个HotItem-content)
hot_items = soup.find_all("div", class_="HotItem-content")
# 3. 循环提取每个条目的数据
hot_list = []

最低0.47元/天 解锁文章
410

被折叠的 条评论
为什么被折叠?



