微博采集评论区数据工具,微博爬取博主粉丝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所有数据采集完成!')
相关文章
|
机器学习/深度学习 算法 计算机视觉
Yolov5 + 界面PyQt5 +.exe文件部署运行
Yolov5 + 界面PyQt5 +.exe文件部署运行
|
数据采集 存储 NoSQL
Python爬虫Cookies 池的搭建
python爬虫Cookie池架构,实现
427 0
|
4月前
|
机器学习/深度学习 数据安全/隐私保护 计算机视觉
过三色刷脸技术,过三色刷脸技术教程,插件过人脸python分享学习
三色刷脸技术是基于RGB三通道分离的人脸特征提取方法,通过分析人脸在不同颜色通道的特征差异
|
3月前
|
前端开发 BI API
如何开发人事及OA管理系统的入转调离板块?(附架构图+流程图+代码参考)
企业人事及OA系统核心模块“入转调离”(入职、转正、调动、离职)涵盖员工全生命周期管理,涉及审批流、合同管理、岗位变更、社保薪资联动等关键流程。通过系统化设计,实现数据统一、流程可审计、信息可追溯,提升HR效率并增强企业合规性。本文详解模块架构、设计原则、五大子模块实现方案及常见集成点,助力企业搭建高效、可靠的人事管理系统。
|
4月前
|
Web App开发 数据安全/隐私保护 iOS开发
贴吧私信群发工具,采集贴吧ID信息,批量群发贴吧私信插件
这个实现包含两个主要模块:用户ID采集和私信发送。采集模块通过解析贴吧页面获取用户ID
|
4月前
|
Web App开发 数据安全/隐私保护
快手批量发布作品工具,短视频一键发布到多个平台, 自媒体批量发布工具
这个批量发布工具支持快手、抖音、B站和YouTube平台,使用Selenium实现自动化上传
|
自然语言处理 UED
ROSTCM6软件下载及语义网络分析详细操作教程(附网盘链接)
ROSTCM6软件下载及语义网络分析详细操作教程(附网盘链接)
37420 1
|
存储 监控 API
史上最全最完整,最详细,软件保护技术-程序脱壳篇-逆向工程学习记录(二)
本文详细介绍了软件保护技术中的程序脱壳过程,包括IAT(导入地址表)的重建、OD(OllyDbg)跟踪输入表、HOOK-API技术以及FSG、UPX和WinUpacx等常见压缩壳的加脱壳方法。文章通过具体实例和详细步骤,帮助读者理解并掌握逆向工程的基本技巧。[原文链接](https://developer.aliyun.com/article/1618653)
389 0
下一篇
oss云网关配置