首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >微博自动发帖机器人,自动发帖脚本插件微博,python微博模块分享

微博自动发帖机器人,自动发帖脚本插件微博,python微博模块分享

原创
作者头像
用户11749621
发布2025-07-21 18:31:46
发布2025-07-21 18:31:46
1070
举报

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

代码说明:这个微博自动发帖机器人包含三个主要模块:1) 微博机器人核心功能模块,处理登录和发帖;2) 内容生成器模块,基于马尔可夫链算法自动生成微博内容;3) 主程序模块,设置定时任务和运行逻辑。使用时需要准备语料库文件corpus.txt和图片目录pics。

代码语言:txt
复制

import requests
import json
import time
import random
from datetime import datetime

class WeiboBot:
    def __init__(self, username, password):
        self.session = requests.Session()
        self.headers = {
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36',
            'Referer': 'https://weibo.com/'
        }
        self.username = username
        self.password = password
        self.login_url = 'https://passport.weibo.cn/sso/login'
        self.post_url = 'https://weibo.com/aj/mblog/add?ajwvr=6'
        
    def login(self):
        login_data = {
            'username': self.username,
            'password': self.password,
            'savestate': '1',
            'r': 'https://weibo.com/',
            'ec': '0',
            'pagerefer': '',
            'entry': 'mweibo',
            'wentry': '',
            'loginfrom': '',
            'client_id': '',
            'code': '',
            'qq': '',
            'mainpageflag': '1',
            'hff': '',
            'hfp': ''
        }
        response = self.session.post(self.login_url, data=login_data, headers=self.headers)
        if response.status_code == 200:
            print("登录成功!")
            return True
        else:
            print("登录失败!")
            return False
            
    def post_weibo(self, content, pic_path=None):
        post_data = {
            'location': 'v6_content_home',
            'text': content,
            'appkey': '',
            'style_type': '1',
            'pic_id': '',
            'tid': '',
            'pdetail': '',
            'mid': '',
            'isReEdit': 'false',
            'rank': '0',
            'rankid': '',
            'module': 'stissue',
            'pub_source': 'main_',
            'pub_type': 'dialog',
            '_t': '0'
        }
        
        if pic_path:
            files = {'pic': open(pic_path, 'rb')}
            response = self.session.post(self.post_url, data=post_data, files=files, headers=self.headers)
        else:
            response = self.session.post(self.post_url, data=post_data, headers=self.headers)
            
        if response.status_code == 200:
            print("微博发布成功!")
            return True
        else:
            print("微博发布失败!")
            return False
            
    def auto_post_schedule(self, contents, interval=3600, random_range=600):
        while True:
            try:
                content = random.choice(contents)
                self.post_weibo(content)
                sleep_time = interval + random.randint(-random_range, random_range)
                print(f"下次发帖将在 {sleep_time//60} 分钟后...")
                time.sleep(sleep_time)
            except Exception as e:
                print(f"发生错误: {e}")
                time.sleep(300)
 random
import jieba
from collections import Counter

class ContentGenerator:
    def __init__(self, corpus_file):
        with open(corpus_file, 'r', encoding='utf-8') as f:
            self.corpus = f.read()
        self.words = list(jieba.cut(self.corpus))
        self.word_pairs = [(self.words[i], self.words[i+1]) for i in range(len(self.words)-1)]
        self.word_counter = Counter(self.words)
        
    def generate_sentence(self, length=15):
        current_word = random.choice(list(self.word_counter.keys()))
        sentence = [current_word]
        
        for _ in range(length-1):
            possible_next = [pair[1] for pair in self.word_pairs if pair[0] == current_word]
            if not possible_next:
                current_word = random.choice(list(self.word_counter.keys()))
            else:
                current_word = random.choice(possible_next)
            sentence.append(current_word)
            
        return ''.join(sentence)
        
    def generate_weibo_content(self, num=10):
        contents = []
        for _ in range(num):
            sentence_num = random.randint(1, 3)
            content = ' '.join([self.generate_sentence(random.randint(5, 20)) for _ in range(sentence_num)])
            contents.append(content)
        return contents

        
 weibo_bot import WeiboBot
from content_generator import ContentGenerator
import os
import schedule
import time

def main():
    # 初始化
    username = "your_weibo_account"
    password = "your_password"
    corpus_file = "corpus.txt"
    
    # 创建内容生成器
    generator = ContentGenerator(corpus_file)
    contents = generator.generate_weibo_content(50)
    
    # 创建微博机器人
    bot = WeiboBot(username, password)
    if not bot.login():
        print("登录失败,程序退出")
        return
    
    # 定时发帖
    def job():
        content = random.choice(contents)
        print(f"准备发布微博: {content}")
        if random.random() < 0.3:  # 30%概率带图片
            pic_dir = "pics"
            if os.path.exists(pic_dir) and os.listdir(pic_dir):
                pic_path = os.path.join(pic_dir, random.choice(os.listdir(pic_dir)))
                bot.post_weibo(content, pic_path)
            else:
                bot.post_weibo(content)
        else:
            bot.post_weibo(content)
    
    # 设置定时任务
    schedule.every(2).hours.do(job)
    
    print("微博自动发帖机器人已启动...")
    while True:
        schedule.run_pending()
        time.sleep(1)

if __name__ == "__main__":
    main()

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
作者已关闭评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档