Python爬取微博数据实战教程(附完整代码)

分享下微博爬虫的代码 一、说在前面 微博的反爬做的还是挺好的,登陆过程中有跳转、加密、验证码等玩意儿夹杂在一起,模拟登陆的难度比较大。所以偷懒用了cookie登录的方式,访问wap站来减小难度。 思路是从一个大V开始抓取他的粉丝列表,从粉丝列表中筛选粉丝数较大的号继续爬取他的粉丝列表,获取了大量的微博UID后,拼接出他的个人资料页和所发微博页,从中爬取需要的数据。 二、上代码 2.1 获取微博UID impo 阅读详情
AI摘要

本文详细介绍用Python爬取微博数据,包括用户信息、内容、评论等。涵盖准备工作,如安装库、注册开发者账号等;介绍三种爬取方法,还涉及数据解析清洗、存储,以及反爬虫策略。提供完整代码,建议初学者从移动端API开始,文末有Python学习资料福利。

包含编程籽料、学习路线图、爬虫代码、安装包等!【点击领取】

一、前言
微博作为中国最大的社交媒体平台之一,蕴含着丰富的公开数据。本文将详细介绍如何使用Python爬取微博数据,包括用户信息、微博内容、评论等,并提供完整的代码实现。

二、准备工作

  1. 需要安装的库
pip install requests beautifulsoup4 selenium pandas
  1. 其他准备
    注册微博开发者账号(可选)

安装Chrome浏览器和对应版本的ChromeDriver

三、微博爬取的3种方法
方法1:通过移动端API爬取(推荐)

import requests
import json

def get_weibo_content(user_id, max_page=5):
    headers = {
        'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1'
    }
    
    for page in range(1, max_page+1):
        url = f'https://m.weibo.cn/api/container/getIndex?uid={user_id}&type=uid&page={page}'
        response = requests.get(url, headers=headers)
        if response.status_code == 200:
            data = json.loads(response.text)
            weibos = data['data']['cards']
            for weibo in weibos:
                if 'mblog' in weibo:
                    content = weibo['mblog']['text']
                    print(content)
        else:
            print(f"请求失败,状态码:{response.status_code}")

# 使用示例(替换为真实用户ID)
get_weibo_content('1234567890')

方法2:使用Selenium模拟浏览器

from selenium import webdriver
from selenium.webdriver.common.by import By
import time

def selenium_weibo_spider(keyword):
    driver = webdriver.Chrome()
    url = f'https://s.weibo.com/weibo?q={keyword}'
    driver.get(url)
    
    # 等待页面加载
    time.sleep(5)
    
    # 获取微博内容
    weibos = driver.find_elements(By.XPATH, '//div[@class="card-wrap"]')
    for weibo in weibos[:10]:  # 只取前10条
        try:
            content = weibo.find_element(By.XPATH, './/p[@class="txt"]').text
            print(content.strip())
        except:
            continue
    
    driver.quit()

# 使用示例
selenium_weibo_spider('Python')

方法3:使用官方API(需要开发者权限)

import requests

def official_api_spider(access_token):
    url = 'https://api.weibo.com/2/statuses/public_timeline.json'
    params = {
        'access_token': access_token,
        'count': 100
    }
    response = requests.get(url, params=params)
    if response.status_code == 200:
        data = response.json()
        for status in data['statuses']:
            print(f"用户:{status['user']['screen_name']}")
            print(f"内容:{status['text']}")
            print("---")
    else:
        print(f"请求失败:{response.status_code}")

# 使用示例(需要替换为真实access_token)
# official_api_spider('your_access_token')

四、数据解析与清洗

  1. 处理HTML标签
from bs4 import BeautifulSoup

def clean_html(content):
    soup = BeautifulSoup(content, 'html.parser')
    # 移除所有HTML标签
    text = soup.get_text()
    # 替换多余空白
    text = ' '.join(text.split())
    return text
  1. 处理表情符号
import re

def remove_emoji(text):
    emoji_pattern = re.compile("["
        u"\U0001F600-\U0001F64F"  # emoticons
        u"\U0001F300-\U0001F5FF"  # symbols & pictographs
        u"\U0001F680-\U0001F6FF"  # transport & map symbols
        u"\U0001F1E0-\U0001F1FF"  # flags (iOS)
                           "]+", flags=re.UNICODE)
    return emoji_pattern.sub(r'', text)

五、数据存储

  1. 存储到CSV文件
import pandas as pd

def save_to_csv(data, filename='weibo_data.csv'):
    df = pd.DataFrame(data)
    df.to_csv(filename, index=False, encoding='utf_8_sig')
    print(f"数据已保存到{filename}")
  1. 存储到MySQL数据库
import pymysql

def save_to_mysql(data):
    connection = pymysql.connect(
        host='localhost',
        user='root',
        password='password',
        database='weibo_data'
    )
    
    try:
        with connection.cursor() as cursor:
            sql = "INSERT INTO weibo (content, user, time) VALUES (%s, %s, %s)"
            cursor.executemany(sql, data)
        connection.commit()
    finally:
        connection.close()

六、反爬虫策略应对

  1. 请求头设置
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',
    'Referer': 'https://weibo.com/',
    'Cookie': '你的Cookie'
}
  1. 使用代理IP
proxies = {
    'http': 'http://127.0.0.1:1080',
    'https': 'http://127.0.0.1:1080'
}

response = requests.get(url, headers=headers, proxies=proxies)
  1. 设置请求间隔
import random
import time

def random_delay():
    time.sleep(random.uniform(1, 3))

七、完整案例:爬取某话题下的微博

import requests
import pandas as pd
from bs4 import BeautifulSoup
import time
import random

def get_weibo_topic(topic, pages=5):
    base_url = 'https://s.weibo.com/weibo'
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
    }
    
    all_data = []
    
    for page in range(1, pages+1):
        params = {
            'q': topic,
            'page': page
        }
        
        response = requests.get(base_url, params=params, headers=headers)
        if response.status_code != 200:
            print(f"第{page}页请求失败")
            continue
            
        soup = BeautifulSoup(response.text, 'html.parser')
        cards = soup.find_all('div', class_='card-wrap')
        
        for card in cards:
            try:
                content = card.find('p', class_='txt').get_text(strip=True)
                user = card.find('a', class_='name').get_text(strip=True)
                time_text = card.find('p', class_='from').get_text(strip=True)
                
                all_data.append({
                    '用户': user,
                    '内容': content,
                    '时间': time_text
                })
            except Exception as e:
                print(f"解析出错: {e}")
                continue
                
        print(f"第{page}页完成")
        time.sleep(random.uniform(2, 5))
    
    df = pd.DataFrame(all_data)
    df.to_excel(f'{topic}_微博数据.xlsx', index=False)
    print(f"数据已保存到{topic}_微博数据.xlsx")

# 使用示例
get_weibo_topic('Python编程', pages=3)

八、总结
本文介绍了三种爬取微博数据的方法:

通过移动端API(最简单高效)

使用Selenium模拟浏览器(适合动态加载内容)

官方API(最稳定但需要申请权限)

建议初学者从移动端API开始尝试,遇到问题时可以结合Selenium解决。完整代码已提供,可以直接运行测试。

最后:
希望你编程学习上不急不躁,按照计划有条不紊推进,把任何一件事做到极致,都是不容易的,加油,努力!相信自己!

文末福利
最后这里免费分享给大家一份Python全套学习资料,希望能帮到那些不满现状,想提升自己却又没有方向的朋友,也可以和我一起来学习交流呀。

包含编程资料、学习路线图、源代码、软件安装包等!【点击这里】领取!
① Python所有方向的学习路线图,清楚各个方向要学什么东西
② 100多节Python课程视频,涵盖必备基础、爬虫和数据分析
③ 100多个Python实战案例,学习不再是只会理论
④ 华为出品独家Python漫画教程,手机也能学习

在这里插入图片描述

【爬虫实战】04 Scrapy爬取微博并绘制词云图 Scrapy 是用 Python 实现的一个为了爬取网站数据、提取结构性数据而编写的应用框架。Scrapy 常应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中。通常我们可以很简单的通过 Scrapy 框架实现一个爬虫,抓取指定网站的内容或图片。Scrapy Engine(引擎): 负责Spider、ItemPipeline、Downloader、Scheduler中间的通讯,信号、数据传递等。Scheduler(调度器) 阅读详情

相关推荐

Python 超简单爬取新浪微博数据

新浪微博的数据可是非常有价值的,你可以拿来数据分析、拿来做网站、甚至是*****。不过很多人由于技术限制,想要使用的时候只能使用复制粘贴这样的笨方法。没关系,现在就教大家如何批量爬取微博的数据,大大加快数据迁移速度! 我们使用到的是第三方作者开发的爬虫库weiboSpider(有工具当然要用工具啦)。 1. 下载项目 进入下方的网址,点击Download ZIP下载项目文件 github.com/dataabc/wei… 或者 你有git的话可以在cmd/te...

four91的博客 6428

Python爬虫 | 爬取微博和哔哩哔哩数据

利用python爬取b站和微博的一些数据并进行可视化

天下弈星~的博客 2万+

爬取某个微博用户的所有微博内容及照片

ajax爬取某个微博用户所有微博内容及图片教程

<Hunter> 7585

Python|30行代码实现微博热榜爬虫(及可视化进阶)

练手必备!微博热搜爬虫项目,含pillow绘图及selenium的使用。

凌小添的博客 1万+

python爬取微博数据

使用python爬取微博数据,使用的代理是蜻蜓代理的隧道代理,包天17元。使用的是request库。有些网页因为网络等原因打不开,总共获取到了76000+数据,没有爬取评论。评论部分的代码调试没有问题,在实际爬取的时候总是报错,可以确定的是代码没问题,可能是网页的问题,可以加一个异常处理,不想写了,评论爬下来也没有很大价值。 这次爬取给我最大的感受就是不可能爬到所有信息,之前没加异常处理总是爬到一...

weixin_46660582的博客 2498

基于Python实现的微博POI信息爬取

微博爬虫系列之POI信息爬取,通过Python request库实现。

青木(qingmu2048)的心情随笔 1360

六个步骤学会使用Python爬虫爬取数据(爬虫爬取微博实战)

用python的爬虫爬取数据真的很简单,只要掌握这六步就好,也不复杂。以前还以为爬虫很难,结果一上手,从初学到把东西爬下来,一个小时都不到就解决了。

大模型工程师老蓝的博客 1万+

Python 爬虫实战:微博用户数据爬取

微博作为国内最大的社交媒体平台之一,蕴含着大量有价值的公开数据。本文将详细介绍如何使用 Python 爬取微博数据,包括环境搭建、登录模拟、数据抓取、反爬应对、数据存储等完整流程。

yansideyucsdn的博客 2586

【附代码】python爬取新浪微博(微博内容,微博评论,用户信息等)并进行情绪分析

微博数据抓取并对数据进行情绪分析微博数据爬虫开始爬虫之前请先了解代码实现文本情绪分析 本文包含内容:借助Python抓取微博数据,并对抓取的数据进行情绪分析 代码实现:微博用户的行为与情感分析 微博数据爬虫 开始爬虫之前请先了解 Q:有哪些微博提供的数据是我们可以利用的? A:微博数据可以分为几类:博文相关数据,用户信息数据,单条微博评论数据,社交关系网络数据。其中 博文相关数据包括:微博的UR...

cindy_1102的博客 3万+

堆内存管理核心逻辑 超详细复习笔记

本文详细解析了堆内存管理的核心逻辑,包括初始化、分配和释放三个关键环节。系统通过全局堆管理结构体和链表机制实现动态内存管理:初始化时标记整块内存为空闲;分配时遍历链表查找合适空闲块并进行分割;释放时定位内存块头并重新标记为空闲,支持相邻块合并以减少碎片。文章对比了链表式管理和线性分配的优缺点,指出链表式更灵活但实现复杂,线性分配简单但无法释放。最后总结了常见错误(如指针回推错误、碎片问题)和扩展知识(不同内存管理算法)。这套机制是理解嵌入式系统和RTOS内存管理的基础。

2502_92009732的博客 1199

13 万字 C 语言从入门到精通保姆级教程2021 年版

13 万字C语言保姆级教程,从入门到精通。

李南江 61万+

python爬取微博用户信息(六)—— 完整代码

本节为爬取微博用户信息的完整代码,以及项目结构。 感兴趣的小伙伴可以收藏哦! 另外,关于本代码的效果展示,以及教程,点击以下链接即可。 python爬取微博用户信息(一)—— 效果展示 python爬取微博用户信息(二)—— cookie的获取方式以及configs中参数的设置 目录 一、文件结构 二、代码 1、configs.py 2、main.py 3、MicroBlog.py 一、文件结构 项目名称:Crawling of microblog information C.

D77的博客 9597

STC8单片机低功耗延时优化实践:从循环等待到定时唤醒

本文深入探讨了STC8单片机低功耗延时优化的核心方法,即利用掉电唤醒定时器(WKT)替代传统的循环等待,实现从“空转耗电”到“定时唤醒”的转变。通过实战代码演示了如何编写低功耗延时函数,将待机电流从mA级降至μA级,并分析了精度、唤醒时间等关键权衡点,为电池供电的物联网设备提供了有效的续航优化方案。

pea55的博客 324

Python爬取微博签到数据(2025年3月更)

这是一篇用python爬取微博签到数据的爬虫教程,不建议没有爬虫基础的小伙伴食用惹,因为代码我用Ai润色过,所以看起来会比较复杂繁琐!教程并没有怎么参考现有的文章,所以很多东西都是自己瞎诌嘿嘿。

abcbbbd的博客 4659

全网最详细的UAVCAN/DroneCAN链路开发(官方DroneCAN消息+自定义DroneCAN消息)附DroneCAN项目源码

全网最详细的UAVCAN/DroneCAN链路移植开发(官方DroneCAN消息+自定义DroneCAN消息)附工程移植源码

Bit_Dong的博客 3239

使用rknn进行facenet部署

修改facenet网络的forward函数代码。

如果想成为中心,那么就到中心去吧。 1044

爬虫实战: Python爬取微博评论数据

在数据科学和网络爬虫的领域中,采集社交媒体的数据是非常普遍且重要的一环。今天,我们以微博为例,介绍如何使用Python爬取评论数据,并将其存储到文件中。本文将从爬取目标、所涉及知识点、步骤分析、爬取结果和完整代码五个模块来详细阐述。通过本文的介绍,我们了解了如何使用Python爬取微博的评论数据,并将数据有效存储到Excel中。在实际应用中,爬虫技术能够为我们的数据分析提供丰富的信息。希望读者能够根据本文的示例,进一步探索和扩展自己的数据爬取项目!如果您有任何问题或心得,欢迎在评论区分享。

2301_78150559的博客 4813

PCL 将对象模板与点云对齐【2025最新版】

PCL模版匹配算法的使用案例,博客长期更新,本文最近更新时间为:2025年1月18日。

点云侠的博客 5378

Python爬取微博数据实战教程:从入门到进阶

本文从基础到进阶讲解了微博数据爬取的多种方法,涵盖了网页解析、API调用、数据存储等关键环节。实际开发中,建议结合具体需求选择合适的方案,并始终遵守相关法律法规。微博作为中国最大的社交媒体平台之一,蕴含着丰富的用户行为数据和舆情信息。本文将带你使用Python实现微博数据爬取,涵盖基础爬虫到反反爬策略的完整解决方案。频率控制:微博有严格的频率限制,建议设置3秒以上的请求间隔。数据清洗:微博正文包含HTML标签和表情符号,需要特殊处理。更新维护:微博前端结构经常变动,爬虫需要定期更新。6.1 使用代理IP。

Python_trys的博客 2853

华为OD机试 - 统计文本数量(Java 2025 A卷 100分)

华为OD机试 2025A卷题库疯狂收录中,刷题。

学Java,找哪吒 1438

零基础速成simulink代码生成——stateflow基础3

此专栏面向嵌入式工程没有matlab开发经验的人,可以快速学习和实践这门技术。MDB技术,越来越成熟和普遍,从手写代码转到基于模型开发已经是大势,不仅减少开发周期,还增加代码的复用性。汽车领域、医疗和算法建模广泛使用。

不断debug,优化中…… 1711

python爬取微博数据代码_Python selenium爬取微博数据代码实例

爬取某人的微博数据,把某人所有时间段的微博数据都爬下来。具体思路:创建driver-----get网页----找到并提取信息-----保存csv----翻页----get网页(开始循环)----...----没有“下一页”就结束,用了while True,没用自我调用函数嘟大海的微博:https://weibo.com/u/1623915527办公室小野的微博:https://weibo.com/...

weixin_39777404的博客 1195

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Python爬虫—爬取微博评论数据

下面我将详细讲解如何使用Python爬取微博评论数据,包括完整的代码实现和分步骤解释。

2301_78096295的博客 3292

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

python怎么爬取新浪微博数据_新浪微博爬虫,用python爬取新浪微博数据

Weibo Spider本程序可以连续爬取一个或多个新浪微博用户(如胡歌、迪丽热巴、郭碧婷)的数据,并将结果信息写入文件或数据库。写入信息几乎包括用户微博的所有数据,包括用户信息和微博信息两大类。因为内容太多,这里不再赘述,详细内容见获取到的字段。如果只需要用户信息,可以通过设置实现只爬取微博用户信息的功能。本程序需设置cookie来获取微博访问权限,后面会讲解如何获取cookie。如果不想设置...

weixin_39747293的博客 3709

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

python爬取微博评论(无重复数据)

python爬取微博评论(无重复数据) 前言 一、整体思路 二、获取微博地址 1、获取ajax地址2、解析页面中的微博地址3、获取指定用户微博地址 三、获取主评论 四、获取子评论 1、解析子评论2、获取子评论 五、主函数调用 1、导入相关库2、主函数执行3、结果 写在最后 很多人学习python,不知道从何学起。 很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手。 很多已经做案例的人,却不知道如何去学习更加高深的知识。 那么针对这三类人,我给大家提供一个好的学习平台,

Python_sn的博客 4092
上一篇: Python中一个类如何调用另一个类的方法和属性(详解+代码示例)
下一篇: Python爬虫详解:原理、常用库与实战案例
Python_trys
博客等级 码龄2年 4369粉丝 377原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值