使用 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

openGauss 实战手册:gsql 常用命令、认证配置与运维工具全解

openGauss 实战手册:gsql 常用命令、认证配置与运维工具全解

openGauss 是一款高性能开源数据库,掌握其命令行工具是学习与运维的基础。本文从 gsql 常用命令到集群管理与备份恢复,带你快速上手实际操作。 一、gsql 常用命令与操作 1.gsql 简介 gsql 是 openGauss自带的命令行交互式客户端工具。它允许用户连接到数据库,以交互方式执行 SQL 语句,查看查询结果,并执行各类数据库管理任务。 2.gsql 连接数据库命令格式 语法结构 gsql [OPTION]... [DBNAME [USERNAME]] 常用参数 -d, --dbname=DBNAME:指定要连接的数据库名称。 -p, --port=PORT:指定数据库服务监听的TCP端口。 -U, --username=USERNAME:指定连接数据库的用户名。 -W, --password:强制gsql 在连接前提示输入密码。 -h, --host=HOSTNAME:

By Ne0inhk
一款数据库SQL防火墙:可以拦截99.99%,可以阻止恶意SQL

一款数据库SQL防火墙:可以拦截99.99%,可以阻止恶意SQL

文章目录 * 一、SQL注入:那个偷偷溜进房子的"不速之客" * 二、三种模式,给数据库装上"智能门禁系统" * 三、又快又准又简单,这才是理想中的安全防护 * 1. 99.99%的拦截准确率,近乎"零误报" * 2. 性能损耗低于6%,业务无感 * 3. 两步配置,小白也能轻松上手 * 四、从党政到能源,为什么他们都选择了金仓? 在数字化转型的浪潮中,数据已成为企业的核心资产。然而,SQL注入攻击如同潜伏在阴影中的"不速之客",时刻威胁着数据库的安全。即使开发团队严守预编译、输入过滤等防线,遗留代码、第三方组件的漏洞或人为疏忽仍可能给攻击者可乘之机。难道只能被动挨打、疲于补漏吗?金仓数据库(KingbaseES)内置的SQL防火墙,

By Ne0inhk
内网穿透的应用-Plex 打造随身私人影院,告别限制。

内网穿透的应用-Plex 打造随身私人影院,告别限制。

Plex 作为一款集影音整理与播放于一体的工具,核心功能是自动扫描本地存储的电影、剧集、音乐等文件,智能匹配海报、字幕、演职员信息,把杂乱的文件夹梳理成界面精美的私人影音库,适配 Windows、macOS、NAS、树莓派等多平台,尤其适合喜欢收藏高清片源、追求观影体验的家庭用户和影音爱好者,不用手动整理文件、不用忍受视频平台的广告,是管理本地影音资源的高效工具。 使用 Plex 的过程中发现,它对文件命名的兼容性很高,哪怕是俗称、简称都能精准识别,不过首次添加大量影音文件时,匹配元数据需要一定时间,建议在网络稳定时操作,且不同设备同步播放进度需要登录同一账号,这点新手需要留意。 但 Plex 仅在局域网内使用时,局限性很明显:比如出差时想回看家里存的纪录片,只能等回家;给异地的家人分享收藏的老电影,要么靠网盘传输耗时长,要么画质被压缩;甚至在不同房间切换设备,一旦离开局域网范围,就无法继续播放,完全失去了私人影院的灵活性。 而将 Plex 与 内网穿透结合后,这些问题都能迎刃而解:不用折腾路由器端口映射、不用申请公网

By Ne0inhk
MySQL 复制表:结构、数据及索引的完整复制

MySQL 复制表:结构、数据及索引的完整复制

MySQL 复制表:结构、数据及索引的完整复制 * 一、MySQL 复制表概述 * 二、SHOW CREATE TABLE 方法 * 2.1 完整复制流程 * 2.1.1 实际操作步骤 * 2.1.2 示例代码 * 三、CREATE TABLE ... LIKE 方法 * 3.1 快速复制表结构 * 3.2 结合数据复制 * 四、mysqldump 工具方法 * 4.1 使用 mysqldump 导出表 * 4.2 导入到新表 * 五、不同复制方法对比 * 六、高级复制技巧 * 6.

By Ne0inhk