微博采集评论区数据工具,微博爬取博主粉丝ID抓取,微博提取评论ID博主粉丝列表

简介: 这个代码实现了完整的微博数据采集功能,包括评论采集、粉丝ID抓取和评论用户粉丝列表获取

下载地址:https://www.pan38.com/share.php?code=JCnzE 提取密码:7789

这个代码实现了完整的微博数据采集功能,包括评论采集、粉丝ID抓取和评论用户粉丝列表获取。使用时需要替换YOUR_WEIBO_COOKIE_HERE为有效的微博cookie。代码包含详细注释和异常处理,可以稳定运行并保存数据到JSON文件。

import requests
import json
import time
import random
import re
from bs4 import BeautifulSoup
from urllib.parse import urlencode

class WeiboCrawler:
def init(self, cookie):
self.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',
'Cookie': cookie
}
self.session = requests.Session()
self.session.headers.update(self.headers)

def get_weibo_comments(self, weibo_id, max_pages=10):
    """获取微博评论数据"""
    comments = []
    base_url = 'https://weibo.com/ajax/statuses/buildComments'

    for page in range(1, max_pages + 1):
        params = {
            'is_reload': 1,
            'id': weibo_id,
            'is_show_bulletin': 2,
            'is_mix': 0,
            'count': 20,
            'uid': '',
            'fetch_level': 0,
            'locale': 'zh-CN',
            'page': page
        }

        try:
            response = self.session.get(base_url, params=params)
            if response.status_code == 200:
                data = response.json()
                comments.extend(data['data'])
                print(f'已获取第{page}页评论,共{len(data["data"])}条')
                time.sleep(random.uniform(1, 3))
            else:
                print(f'获取评论失败,状态码:{response.status_code}')
                break
        except Exception as e:
            print(f'获取评论异常:{str(e)}')
            break

    return comments

def get_user_followers(self, user_id, max_pages=20):
    """获取用户粉丝列表"""
    followers = []
    base_url = 'https://weibo.com/ajax/friendships/friends'

    for page in range(1, max_pages + 1):
        params = {
            'relate': 'fans',
            'uid': user_id,
            'type': 'fans',
            'newFollowerCount': 0,
            'page': page
        }

        try:
            response = self.session.get(base_url, params=params)
            if response.status_code == 200:
                data = response.json()
                followers.extend(data['users'])
                print(f'已获取第{page}页粉丝,共{len(data["users"])}个')
                time.sleep(random.uniform(2, 4))
            else:
                print(f'获取粉丝失败,状态码:{response.status_code}')
                break
        except Exception as e:
            print(f'获取粉丝异常:{str(e)}')
            break

    return followers

def get_comment_users_followers(self, comments, max_followers_per_user=100):
    """获取评论用户的粉丝列表"""
    user_followers = {}

    for comment in comments[:10]:  # 限制前10个评论用户
        user_id = comment['user']['id']
        print(f'开始获取用户 {comment["user"]["screen_name"]} 的粉丝...')
        followers = self.get_user_followers(user_id, max_pages=max_followers_per_user//20)
        user_followers[user_id] = {
            'user_info': comment['user'],
            'followers': followers
        }
        time.sleep(random.uniform(5, 10))

    return user_followers

def save_to_json(self, data, filename):
    """保存数据到JSON文件"""
    with open(filename, 'w', encoding='utf-8') as f:
        json.dump(data, f, ensure_ascii=False, indent=2)
    print(f'数据已保存到 {filename}')

if name == 'main':

# 替换为你的微博cookie
cookie = 'YOUR_WEIBO_COOKIE_HERE'

crawler = WeiboCrawler(cookie)

# 示例微博ID
weibo_id = '1234567890'  # 替换为你要爬取的微博ID

# 1. 获取微博评论
print('开始获取微博评论...')
comments = crawler.get_weibo_comments(weibo_id, max_pages=5)
crawler.save_to_json(comments, 'weibo_comments.json')

# 2. 获取博主粉丝
print('\n开始获取博主粉丝...')
# 从评论中提取博主ID(假设第一条评论的用户是博主)
if comments:
    blogger_id = comments[0]['user']['id']
    followers = crawler.get_user_followers(blogger_id, max_pages=5)
    crawler.save_to_json(followers, 'blogger_followers.json')

# 3. 获取评论用户的粉丝列表
print('\n开始获取评论用户的粉丝...')
user_followers = crawler.get_comment_users_followers(comments, max_followers_per_user=50)
crawler.save_to_json(user_followers, 'comment_users_followers.json')

print('\n所有数据采集完成!')
相关文章
|
11月前
|
数据采集 Web App开发 存储
用Python的Requests+BeautifulSoup爬取微博热搜榜及话题内容
用Python的Requests+BeautifulSoup爬取微博热搜榜及话题内容
|
5月前
|
数据采集 JSON 自然语言处理
Python爬取淘宝评论:从数据采集到情感分析的全流程指南
淘宝评论是用户对商品的真实反馈,包含产品优缺点、使用体验、满意度等关键信息。通过Python爬取并分析评论,可帮助商家优化产品、制定营销策略,或为消费者提供决策参考。本文将介绍如何用Python高效获取淘宝评论,并进行基础的情感分析。
|
6月前
|
人工智能 运维 API
火爆全网的Skill自己怎么做?老金来教你!(含避坑指南)
本文深度解析Anthropic官方Skills开发指南(anthropics/skills),揭秘“渐进式展示”三层架构:100词元数据决定触发、5000词主体承载核心逻辑、资源按需加载。老金亲测踩坑,提炼6步实操流程与避坑公式,助你零基础打造高效、可维护的专业Skill。(239字)
11849 4
|
机器学习/深度学习 人工智能 JSON
这个AI把arXiv变成代码工厂,快速复现顶会算法!Paper2Code:AI论文自动转代码神器,多智能体框架颠覆科研复现
Paper2Code是由韩国科学技术院与DeepAuto.ai联合开发的多智能体框架,通过规划、分析和代码生成三阶段流程,将机器学习论文自动转化为可执行代码仓库,显著提升科研复现效率。
1969 19
这个AI把arXiv变成代码工厂,快速复现顶会算法!Paper2Code:AI论文自动转代码神器,多智能体框架颠覆科研复现
纳维-斯托克斯方程存在性与光滑性的重构封闭证明 · 第八篇
本文在前七篇推导基础上,整合完整变量重构逻辑、危险项吸收机制、拓扑复杂度控制逻辑与Banach-Sobolev空间一致性收敛分析,形成对纳维-斯托克斯方程存在性与光滑性问题的全封闭证明尝试。
449 2
|
机器学习/深度学习 人工智能 安全
云工开物合作动态丨2025西安交通大学 -阿里云课程(第一批)上线
2025年春季学期,西安交通大学联合阿里云推出九门特色课程,涵盖工程、法律、生命科学、经济管理等领域。这些课程打破传统学科壁垒,提供AI实践工具、动手实验资源及专属算力支持,帮助学生在理论学习之余进行实际操作,提升能力。结课后还将颁发阿里云创作者证书,助力学生成长为跨领域复合型人才。无论专业背景如何,都能找到适合自己的AI进化路径。机会难得,不容错过!
|
边缘计算 人工智能 安全
探索边缘计算:架构、优势及未来趋势
探索边缘计算:架构、优势及未来趋势
|
机器学习/深度学习 计算机视觉
【机器学习】回归树生成过程及举例理解
【8月更文挑战第6天】本文介绍了回归树的生成过程,并通过一个打高尔夫球时间预测的例子详细解释了如何选择分支节点和评估标准方差,以及如何确定停止条件来构建最终的树模型。
419 10
【机器学习】回归树生成过程及举例理解
|
存储 运维 监控
自动化运维:使用Python脚本进行服务器监控
【8月更文挑战第31天】在数字化时代,服务器的稳定运行对于企业至关重要。本文将介绍如何使用Python编写一个简单的服务器监控脚本,帮助运维人员及时发现并解决潜在问题。我们将从基础的服务器资源监控开始,逐步深入到日志分析与报警机制的实现。通过实际代码示例和操作步骤,使读者能够快速掌握自动化监控的技能,提升工作效率。
outreg2的命令代码详解
Stata结果输出:outreg2命令详解