使用 Python 爬虫抓取微博数据的详细步骤(2025最新版)

使用 Python 爬虫抓取微博数据的详细步骤(2025最新版)

📌 前言

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


✅ 抓取微博数据的三种常见方式

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

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


🧰 环境准备

pip install requests pip install beautifulsoup4 pip install selenium pip install pandas pip install 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 inrange(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:

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

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


🧠 总结

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

📚 延伸学习推荐

  • 微博反爬机制详解与应对策略
  • 构建实时微博爬虫+情感分析系统
  • Python + MongoDB 存储海量社交数据
  • 微博话题热度趋势图可视化(pyecharts)

💬 最后

抓取微博的数据并不简单,需要你具备 HTML 分析能力、JS 抓包技巧以及对反爬的理解。建议从搜索页的静态数据入手,再逐步挑战评论、私信、用户关系等复杂数据。

Read more

OpenWebUI联网搜索实战:如何用SearXNG让本地大模型获取实时信息(附百度/360配置)

OpenWebUI联网搜索实战:如何用SearXNG让本地大模型获取实时信息(附百度/360配置) 如果你在本地运行大模型,比如用Ollama部署了Qwen、Llama或者DeepSeek,可能会发现一个尴尬的问题:模型的知识截止日期是固定的,它不知道今天股市涨跌,不清楚最新的科技新闻,甚至不知道明天是什么节日。这种“信息孤岛”的感觉,让本地大模型的实用性大打折扣。 我最初搭建OpenWebUI环境时,也遇到了这个痛点。看着模型一本正经地分析过时的数据,那种无力感让我开始寻找解决方案。市面上有不少联网搜索方案,但要么配置复杂,要么对国内网络环境不友好。经过几周的折腾和测试,我发现SearXNG这个开源元搜索引擎,配合OpenWebUI的联网搜索功能,是目前最稳定、最灵活的方案之一。 更重要的是,通过合理配置SearXNG,我们可以让本地大模型直接调用百度、360等国内搜索引擎,获取符合中文用户习惯的实时信息。这不仅仅是技术上的连接,更是让本地AI真正“接地气”的关键一步。下面我就把自己踩过的坑、验证过的配置,以及实际效果对比,毫无保留地分享给你。 1. 为什么需要SearXN

By Ne0inhk
实战:手写一个通用Web层鉴权注解,解决水平权限漏洞

实战:手写一个通用Web层鉴权注解,解决水平权限漏洞

实战:手写一个通用Web层鉴权注解,解决水平权限漏洞 * 一、背景:一次渗透测试引发的改造 * 二、需求分析:如何高效修复 * 三、业务模型:用户-公司授权关系 * 四、整体架构设计 * 五、代码实现:一步一步来 * 5.1 注解定义 * 5.2 权限管理服务 * 5.3 AOP切面:核心逻辑 * 六、使用示例 * 6.1 场景1:最简单的用法 * 6.2 场景2:对象属性 * 6.3 场景3:批量操作 * 6.4 场景4:嵌套属性 * 6.5 场景5:类级别默认配置 * 七、

By Ne0inhk
cann-recipes-train 仓库深度解读:昇腾平台下 DeepSeek-R1 与 Qwen2.5 强化学习训练优化实践

cann-recipes-train 仓库深度解读:昇腾平台下 DeepSeek-R1 与 Qwen2.5 强化学习训练优化实践

cann-recipes-train 仓库深度解读:昇腾平台下 DeepSeek-R1 与 Qwen2.5 强化学习训练优化实践 前言 自 DeepSeek-R1 发布以来,大模型的强化学习(RL)训练掀起了新一轮的技术热潮。各大厂商与开源社区纷纷投入实践,持续探索更高效的 RL 训练体系。本文将基于 cann-recipes-train 仓库,解读两个实践样例:DeepSeek-R1 的 RL 训练优化实践样例、基于 verl 框架的 Qwen2.5 强化学习实践样例 cann-recipes-train 仓库全景解析:昇腾训练优化的"实战底座" 大模型训练拼效率的阶段,CANN 直接帮我们搞定了底层异构硬件适配、资源调度这些麻烦事,不用再从零研究 GPU 和 NPU 怎么协同,现有模型代码也不用大改就能对接,训

By Ne0inhk

WebToEpub实战指南:三步将网页小说变成随身电子书

WebToEpub实战指南:三步将网页小说变成随身电子书 【免费下载链接】WebToEpubA simple Chrome (and Firefox) Extension that converts Web Novels (and other web pages) into an EPUB. 项目地址: https://gitcode.com/gh_mirrors/we/WebToEpub 你是否曾经遇到过这样的情况:找到了一部精彩的网络小说,却因为网络不稳定无法畅快阅读?或者想要在通勤路上看小说,却担心流量消耗?今天,我将带你掌握WebToEpub这个神器,三步搞定网页转EPUB,让你的阅读体验从此无拘无束! 🔍 痛点分析:为什么你需要WebToEpub? 传统阅读方式的三大困扰: 1. 网络依赖强 - 必须在线才能阅读,断网就"剧终" 2. 阅读体验差

By Ne0inhk