微博采集评论区数据工具,微博爬取博主粉丝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所有数据采集完成!')
相关文章
|
6月前
|
数据采集 Web App开发 存储
用Python的Requests+BeautifulSoup爬取微博热搜榜及话题内容
用Python的Requests+BeautifulSoup爬取微博热搜榜及话题内容
|
机器学习/深度学习 自然语言处理 算法
Jieba分词的准确率提升:使用paddle模式进行分词(使用百度飞桨深度学习模型进行分词)
jieba中的paddle模式是指使用飞桨(PaddlePaddle)深度学习框架加速分词的一种模式。相对于传统的分词算法,paddle模式采用了深度学习模型,可以获得更高的分词准确度和更快的分词速度。
|
10月前
|
机器学习/深度学习 人工智能 JSON
这个AI把arXiv变成代码工厂,快速复现顶会算法!Paper2Code:AI论文自动转代码神器,多智能体框架颠覆科研复现
Paper2Code是由韩国科学技术院与DeepAuto.ai联合开发的多智能体框架,通过规划、分析和代码生成三阶段流程,将机器学习论文自动转化为可执行代码仓库,显著提升科研复现效率。
1314 19
这个AI把arXiv变成代码工厂,快速复现顶会算法!Paper2Code:AI论文自动转代码神器,多智能体框架颠覆科研复现
|
7月前
|
机器学习/深度学习 数据安全/隐私保护 计算机视觉
过三色刷脸技术,过三色刷脸技术教程,插件过人脸python分享学习
三色刷脸技术是基于RGB三通道分离的人脸特征提取方法,通过分析人脸在不同颜色通道的特征差异
|
存储 运维 监控
自动化运维:使用Python脚本进行服务器监控
【8月更文挑战第31天】在数字化时代,服务器的稳定运行对于企业至关重要。本文将介绍如何使用Python编写一个简单的服务器监控脚本,帮助运维人员及时发现并解决潜在问题。我们将从基础的服务器资源监控开始,逐步深入到日志分析与报警机制的实现。通过实际代码示例和操作步骤,使读者能够快速掌握自动化监控的技能,提升工作效率。
|
监控 API 数据安全/隐私保护
小红书详情API接口的获取与应用
在互联网信息爆炸的时代,小红书凭借丰富的用户生成内容(UGC)和精准的推荐系统迅速崛起,成为重要的社区电商平台。为了帮助开发者高效利用平台数据,小红书开放平台提供了多种API接口,涵盖商品详情和笔记详情等。本文详细介绍了如何注册、申请权限、构建请求、处理响应及应用这些API接口,旨在为开发者提供全面的指南,助力数据驱动的决策与创新。
5597 1
|
数据安全/隐私保护
(只需五步)注册谷歌账号详细步骤,解决“此电话号码无法验证”问题
注册google一直不方便,因为如果直接去google官网注册,那么它大概率会显示“此电话号码无法用于进行验证”接下来,按着教程来一步步做,就可以实现跳过此限制,成功用手机号注册google了。很简单的。
27520 1
|
存储 监控 API
史上最全最完整,最详细,软件保护技术-程序脱壳篇-逆向工程学习记录(二)
本文详细介绍了软件保护技术中的程序脱壳过程,包括IAT(导入地址表)的重建、OD(OllyDbg)跟踪输入表、HOOK-API技术以及FSG、UPX和WinUpacx等常见压缩壳的加脱壳方法。文章通过具体实例和详细步骤,帮助读者理解并掌握逆向工程的基本技巧。[原文链接](https://developer.aliyun.com/article/1618653)
537 0