当前位置:首页>python>用 Python 每天自动抓热搜

用 Python 每天自动抓热搜

  • 2026-09-08 07:58:49
用 Python 每天自动抓热搜

每天追热点是不是很累?打开微博、知乎一条条刷,刷着刷着就迷失了……

今天我们用 Python 写一个小脚本,自动抓取微博/知乎热搜榜,存成文本文件,每天定时运行,热点尽在掌握——还不用刷手机!

全程只用 Python 内置库 + 一个第三方库 requests,零基础也能跟上。

1

准备工作:安装依赖

只需安装一个库——requests,用来发送网络请求。打开终端(Windows 按 Win+R 输入 cmd)运行:

pip install requests

💡 已经安装过的同学可以跳过这步。不确定?在终端里输入 pip show requests,有输出就说明装好了。

2

核心代码:抓取知乎热榜

新建一个文件 hot_search.py,把下面的代码粘进去:

importrequestsimportdatetimeimportosdeffetch_zhihu_hot():"""抓取知乎热榜 Top 20"""    url = "https://www.zhihu.com/api/v3/feed/topstory/hot-lists/total"    headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64)","Referer": "https://www.zhihu.com/",    }    resp = requests.get(url, headers=headers, timeout=10)    resp.raise_for_status()    data = resp.json()    today = datetime.date.today().strftime("%Y-%m-%d")    filename = f"热榜_{today}.txt"withopen(filename, "w", encoding="utf-8") as f:        f.write(f"📋 知乎热榜 — {today}\n")        f.write("=" * 40 + "\n\n")for i, item inenumerate(data["data"][:20], 1):            title = item["target"]["title"]            hot   = item["detail_text"]            f.write(f"#{i:02d}  {title}  ({hot})\n")print(f"✅ 已保存到 {filename}")if __name__ == "__main__":    fetch_zhihu_hot()

运行方式:在终端里输入

python hot_search.py

运行成功后,当前文件夹会出现一个 热榜_2026-04-20.txt 文件,打开就能看到今天的 Top 20 热门话题!

3

进阶:让脚本每天自动跑

每天手动跑太麻烦?用 Windows 的「任务计划程序」设置定时任务,每早 8 点自动执行!

Step 1 — 打开任务计划程序

按 Win+S 搜索「任务计划程序」→ 点击打开

Step 2 — 创建基本任务

右侧点「创建基本任务」→ 名称填「每日热搜」→ 触发器选「每天」→ 时间设为 08:00

Step 3 — 设置程序路径

操作选「启动程序」→ 程序填 Python 路径(如 C:\Python\python.exe)→ 参数填脚本完整路径

# 不喜欢图形界面?也可以用 Python 内置的 schedule 库pip installscheduleimportschedule, timeschedule.every().day.at("08:00").do(fetch_zhihu_hot)whileTrue:schedule.run_pending()time.sleep(60)  # 每分钟检查一次

📋 小结 & 动手练习

今天学到的核心知识:

🔹 requests.get() 发送 HTTP 请求,抓取网页数据🔹 resp.json() 把 JSON 格式的响应转成 Python 字典🔹 用 open() + f.write() 把结果存进文本文件🔹 用系统任务计划 / schedule 库实现定时自动化

✏️ 动手练习

把上面的代码运行一遍,然后试着修改一下:把保存格式从 .txt 改成 .csv,用 Excel 打开看效果。提示:把 f.write(f"#{i}...") 改成 f.write(f"{i},{title},{hot}\n") 试试!

🔮 下期预告

算法趣谈:二分查找——为什么猜数字只需 7 次?

明天见,带上你的好奇心 👋

奥饼饼智慧谷 · 兴趣编程 & 技术软件分享

2026-04-20

最新文章

随机文章