跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书GitHub 精选镜像AI 生图工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Python算法

使用 Python 爬虫抓取微博数据的详细步骤

使用 Python 抓取微博数据的两种主要方法:基于 Requests 的接口分析和基于 Selenium 的浏览器模拟。前者需处理 Cookie 和签名,适合静态数据抓取;后者通过模拟浏览器行为对抗反爬,适合动态加载内容。文章提供了环境配置、代码示例及 Cookie 获取指南,并对比了不同工具的适用场景与稳定性,帮助开发者高效完成数据采集任务。

鲜活发布于 2026/3/29更新于 2026/8/2277 浏览
使用 Python 爬虫抓取微博数据的详细步骤

前言

微博作为中国最活跃的社交平台之一,拥有丰富的实时热点、用户动态和评论信息。但由于其强大的反爬策略,抓取微博数据并不像抓取一般静态页面那么容易。本文将介绍如何使用 Python 抓取微博数据,包括使用 API 接口、处理 Cookie 和模拟登录等。

抓取微博数据的常见方式

抓取方式是否推荐说明
使用微博开放 API推荐需注册开发者账号,接口稳定,适合合规抓取
分析网页接口(XHR)可用需要处理 Cookie 和签名,有一定难度
使用 Selenium 模拟浏览器稳定对抗 JS 渲染和反爬,适合评论、滚动数据

本文主要介绍第 2 和第 3 种方法,更灵活、可控性强。

环境准备

pip install requests beautifulsoup4 selenium pandas fake-useragent

浏览器驱动推荐使用 ChromeDriver,对应你的 Chrome 版本,下载地址: https://chromedriver.chromium.org/downloads

实战目标

抓取指定关键词(如'高考')的微博搜索结果,包括:微博内容、发布时间、用户昵称、微博链接。

方法一:Requests + 浏览器抓包 获取接口数据

第一步:打开微博搜索页面

前往:

https://s.weibo.com/weibo?q=高考

F12 打开开发者工具 → Network → XHR,查看接口,如:

https://s.weibo.com/ajax/...

这些接口返回 JSON 数据,但需要携带 Cookie 和 User-Agent,否则返回为空或提示'请登录'。

第二步:抓取数据代码示例

import requests
import pandas as pd
from fake_useragent import UserAgent

# 浏览器登录后手动复制 Cookie
cookies = {"SUB": "你的 SUB 值"}  # 可添加其他关键 cookie
headers = {
    "User-Agent": UserAgent().random,
    "Referer": "https://s.weibo.com",
}
query = "高考"
url = f"https://s.weibo.com/ajax/statuses/search?keyword={query}&page=1"
res = requests.get(url, headers=headers, cookies=cookies)
data = res.json()
results = []
for card in data["data"]["list"]:
    text = card.get("text_raw", "")
    user = card["user"]["screen_name"]
    created_at = card["created_at"]
    mid = card["mid"]
    link = f"https://weibo.com/{card['user']['id']}/{mid}"
    results.append([user, created_at, text, link])
df = pd.DataFrame(results, columns=["用户", "发布时间", "内容", "链接"])
df.to_csv("微博搜索_高考.csv", index=False, encoding="utf-8-sig")

注意事项

  • 必须登录微博后复制 Cookie,否则接口返回空列表。
  • 每次请求不可过快,建议加上 time.sleep()。
  • text_raw 是去除 HTML 标签的原文。

方法二:Selenium 模拟搜索抓取微博内容

步骤

  1. 使用 Selenium 打开微博搜索页面
  2. 模拟滚动加载微博
  3. 使用 BeautifulSoup 或 XPath 抓取内容

示例代码

from selenium import webdriver
from selenium.webdriver.common.by import By
import time
import pandas as pd

options = webdriver.ChromeOptions()
options.add_argument("--disable-blink-features=AutomationControlled")
driver = webdriver.Chrome(options=options)
keyword = "高考"
driver.get(f"https://s.weibo.com/weibo?q={keyword}")
# 等待加载
time.sleep(3)
# 模拟下拉滚动多次
for i in range(5):
    driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
    time.sleep(2)
posts = driver.find_elements(By.CSS_SELECTOR, "div.card-wrap")
data = []
for post in posts:
    try:
        text = post.find_element(By.CSS_SELECTOR, ".content").text
        user = post.find_element(By.CSS_SELECTOR, ".name").text
        timeinfo = post.find_element(By.CSS_SELECTOR, ".from").text
        data.append([user, timeinfo, text])
    except:
        continue
driver.quit()
df = pd.DataFrame(data, columns=["用户", "时间", "内容"])
df.to_csv("selenium_微博数据.csv", index=False, encoding="utf-8-sig")

Cookie 获取方式

你可以通过如下方法获取登录后的 Cookie:

  1. 登录微博 → 按 F12 → Application → Cookies
  2. 找到名为 SUB 的 Cookie
  3. 复制其值,填入代码中的 cookies 字典

也可以使用 Selenium 登录后用 driver.get_cookies() 获取完整 Cookie。

总结

工具适合场景难度稳定性
Requests + 接口抓取热搜/搜索结果⭐⭐⭐⭐⭐⭐⭐
Selenium抓取评论、动态加载页面⭐⭐⭐⭐⭐⭐⭐
官方 API合规授权使用⭐⭐⭐⭐⭐⭐⭐

目录

  1. 前言
  2. 抓取微博数据的常见方式
  3. 环境准备
  4. 实战目标
  5. 方法一:Requests + 浏览器抓包 获取接口数据
  6. 第一步:打开微博搜索页面
  7. 第二步:抓取数据代码示例
  8. 浏览器登录后手动复制 Cookie
  9. 注意事项
  10. 方法二:Selenium 模拟搜索抓取微博内容
  11. 步骤
  12. 示例代码
  13. 等待加载
  14. 模拟下拉滚动多次
  15. Cookie 获取方式
  16. 总结
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • Vue3 中点击方法提示不存在,检查是否缺少 setup 暴露
  • 前端监控实战:构建可观测的前端应用
  • RunningHub:AIGC 创作平台深度解析
  • OpenClaw 在 Linux/Ubuntu 上的安装与部署实战
  • Linux 环境下 C/C++ 编译流程与库管理详解
  • OpenClaw 跨平台安装指南 (Windows/macOS)
  • Spring Boot 结合 MyBatis-Plus 实现分库分表实战
  • VSCode AI Copilot 智能补全失效修复指南
  • 程序员阅兵
  • 无人机安全测试工具 Drone Hacking Tool 使用指南
  • OpenClaw 本地部署及远程监控实操教程
  • LazyLLM 多 Agent 应用实战:源码部署与可视化调试指南
  • 大模型压缩技术:量化、剪枝与蒸馏原理详解
  • Python 与前端集成:构建全栈应用
  • Python 为何成为 AI 开发首选?技术特性与生态全景解析
  • 11 个实用 Python 爬虫项目实战案例汇总
  • MacOS 下使用 Docker 极简安装 OpenClaw 并对接飞书
  • Retinaface+CurricularFace 镜像 Python 3.11.14 安全补丁升级方法
  • RabbitMQ 消息确认机制详解:自动与手动模式
  • C++与Rust函数调用性能优化技巧

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • curl 转代码

    解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online