微博采集评论区数据工具,微博爬取博主粉丝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所有数据采集完成!')
相关文章
|
数据采集 Web App开发 存储
用Python的Requests+BeautifulSoup爬取微博热搜榜及话题内容
用Python的Requests+BeautifulSoup爬取微博热搜榜及话题内容
|
8月前
|
数据采集 JSON 自然语言处理
Python爬取淘宝评论:从数据采集到情感分析的全流程指南
淘宝评论是用户对商品的真实反馈,包含产品优缺点、使用体验、满意度等关键信息。通过Python爬取并分析评论,可帮助商家优化产品、制定营销策略,或为消费者提供决策参考。本文将介绍如何用Python高效获取淘宝评论,并进行基础的情感分析。
|
10月前
|
存储 弹性计算 应用服务中间件
阿里云服务器新手租用方式完整步骤教程(新版)
阿里云服务器提供自定义租用、一键租用、云市场租用和活动租用四种核心方式,适配不同配置需求、技术能力和预算场景。无论是需要精准配置的专业用户,还是追求快速部署的新手,都能找到合适的租用方案。以下是详细的适用场景和操作流程,助力高效上云。
|
10月前
|
人工智能 NoSQL 数据库
DBeaver 25.3 发布 - 通用数据库工具
DBeaver Ultimate Edtion 25.3 Multilingual (macOS, Linux, Windows) - 通用数据库工具
825 0
DBeaver 25.3 发布 - 通用数据库工具
|
机器学习/深度学习 人工智能 JSON
这个AI把arXiv变成代码工厂,快速复现顶会算法!Paper2Code:AI论文自动转代码神器,多智能体框架颠覆科研复现
Paper2Code是由韩国科学技术院与DeepAuto.ai联合开发的多智能体框架,通过规划、分析和代码生成三阶段流程,将机器学习论文自动转化为可执行代码仓库,显著提升科研复现效率。
2230 19
这个AI把arXiv变成代码工厂,快速复现顶会算法!Paper2Code:AI论文自动转代码神器,多智能体框架颠覆科研复现
|
自然语言处理 API 开发工具
14_代码生成初试:LLM辅助编程
在软件开发领域,代码编写是最基础也是最耗时的工作之一。随着人工智能技术的快速发展,特别是大语言模型(LLM)的出现,代码生成技术正在经历前所未有的变革。LLM不仅能够理解自然语言描述的需求,还能生成符合语法规范、逻辑合理的代码片段甚至完整的程序。
1071 0
|
机器学习/深度学习 计算机视觉
【机器学习】回归树生成过程及举例理解
【8月更文挑战第6天】本文介绍了回归树的生成过程,并通过一个打高尔夫球时间预测的例子详细解释了如何选择分支节点和评估标准方差,以及如何确定停止条件来构建最终的树模型。
485 10
【机器学习】回归树生成过程及举例理解
|
JSON 缓存 监控
淘宝商品详情接口(Taobao.item_get)丨淘宝API接口指南
淘宝商品详情接口(Taobao.item_get)允许开发者通过HTTP GET方法获取淘宝商品的详细信息,包括商品ID、价格、库存等。请求需包含key、secret、num_iid等必选参数,支持缓存及多种返回格式。此接口广泛应用于电商数据分析、商品选品、价格监控等领域,提升商家运营效率。
3586 1
outreg2的命令代码详解
Stata结果输出:outreg2命令详解
|
数据采集 JavaScript 前端开发
Vue框架的优缺点是什么
【7月更文挑战第5天】 Vue框架:组件化开发利于重用与扩展,响应式数据绑定简化状态管理;学习曲线平缓,生态系统丰富,集成便捷,且具性能优化手段。缺点包括社区规模相对小,类型支持不足(Vue 3.x改善),路由和状态管理需额外配置,SEO支持有限。随着发展,部分缺点正被克服。
786 1