分享

用Python打造智能热点追踪系统:多平台监控 AI分析 自动推送

 万皇之皇 2025-05-09 发布于广东
用Python打造智能热点追踪系统:多平台监控 AI分析 自动推送

引言:告别手动追踪的信息焦虑

作为一名金融科技领域的数据分析人,我每天需要监控微博、知乎、抖音等平台的热点动态。曾经我的工作台总是堆满十几个浏览器标签,Excel表格里密密麻麻记录着热点数据,但真正写作时却陷入信息过载的困境。直到开始考虑开发了一套Python自动化系统,实现多平台热点抓取→智能分析→可视化报告→定时推送的全流程管理,工作效率提升300%。下面分享这个系统的实现方案。

一、系统架构与核心工具

本系统由四大模块组成(如图1所示),主要依赖以下Python库:

python

# 核心依赖库

import requests # 数据抓取

from bs4 import BeautifulSoup # HTML解析

import openai # 调用GPT-4分析

import pandas as pd # 数据处理

import smtplib # 邮件发送

from email.mime.multipart import MIMEMultipart

import schedule # 定时任务

import matplotlib.pyplot as plt # 可视化

二、多平台热点数据抓取

1. 微博热搜采集(示例代码)

python

def fetch_weibo_hot():

url = 'https://weibo.com/ajax/side/hotSearch'

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' # 需定期更新

}

try:

response = requests.get(url, headers=headers, timeout=10)

data = response.json()

hot_list = []

# 解析实时热搜和文娱榜

for item in data['data']['realtime'] data['data']['entrank']:

hot_list.append({

'platform': '微博',

'rank': item['rank'],

'keyword': item['word'],

'url': f'https://s.weibo.com/weibo?q={item['word']}',

'heat': int(item['raw_hot'])

})

return pd.DataFrame(hot_list).drop_duplicates('keyword')

except Exception as e:

print(f'微博热搜获取失败: {str(e)}')

return pd.DataFrame()

2. 数据存储与整合

python

def merge_hot_data():

# 多平台数据合并

sources = {

'微博': fetch_weibo_hot(),

'知乎': fetch_zhihu_hot(), # 知乎抓取函数略

'抖音': fetch_douyin_hot() # 抖音抓取函数略

}

# 纵向拼接并去重

full_df = pd.concat([df.assign(platform=plat) for plat, df in sources.items()])

full_df = full_df.sort_values('heat', ascending=False).drop_duplicates('keyword')

# 保存原始数据

full_df.to_csv(f'hot_data/{datetime.today().strftime('%Y%m%d')}.csv', index=False)

return full_df

三、AI智能分析模块

1. GPT-4分析指令设计

python

def generate_analysis_prompt(hot_topics):

topics_str = '\n'.join([f'{idx 1}. {row['keyword']}(热度:{row['heat']})'

for idx, row in hot_topics.iterrows()])

return f'''你是一位资深数据分析师,请根据以下跨平台热点生成分析报告:

【热点列表】

{topics_str}

【报告要求】

1. 识别出3个最具商业价值的事件

2. 分析每个事件的传播特征(平台差异、用户画像)

3. 预测未来3天的舆论发展趋势

4. 给出内容创作建议(切入角度、风险规避)

【输出格式】

## 每日热点分析报告({datetime.today().strftime('%Y-%m-%d')})

### 重点事件分析

1. [事件标题]

- 传播特征:...

- 价值评估:...

2. ...

### 创作建议

- 建议1:...

- 建议2:...

'''

2. 调用OpenAI API

python

def get_ai_analysis(text):

openai.api_key = os.getenv('OPENAI_API_KEY')

try:

response = openai.ChatCompletion.create(

model='gpt-4-1106-preview',

messages=[{'role': 'user', 'content': text}],

temperature=0.7,

max_tokens=2000

)

return response.choices[0].message.content

except Exception as e:

print(f'AI分析失败: {str(e)}')

return ''

四、可视化与邮件推送

1. 生成热力图

python

def generate_heatmap(df):

plt.figure(figsize=(12, 6))

pivot_df = df.pivot_table(index='platform', columns='hour', values='heat', aggfunc='sum')

sns.heatmap(pivot_df, cmap='YlGnBu', annot=True, fmt='.0f')

plt.title('各平台热度时段分布')

plt.savefig('temp/heatmap.png') # 保存临时图片

2. 邮件发送功能

python

def send_report(content):

msg = MIMEMultipart()

msg['From'] = os.getenv('SENDER_MAIL')

msg['To'] = os.getenv('RECEIVER_MAIL')

msg['Subject'] = f'{datetime.today().strftime('%m%d')}热点分析报告'

# 添加HTML内容

html = f'''

<html>

<body>

<h2>每日热点报告</h2>

{content.replace('\n', '<br>')}

<img src='cid:heatmap' width='800'>

</body>

</html>

'''

msg.attach(MIMEText(html, 'html'))

# 插入热力图

with open('temp/heatmap.png', 'rb') as f:

img = MIMEImage(f.read())

img.add_header('Content-ID', '<heatmap>')

msg.attach(img)

# 发送邮件(以QQ邮箱为例)

with smtplib.SMTP_SSL('smtp.qq.com', 465) as server:

server.login(os.getenv('SENDER_MAIL'), os.getenv('MAIL_PASSWORD'))

server.send_message(msg)

五、系统集成与优化

1. 主程序逻辑

```python

def main():

# 数据采集

full_df = merge_hot_data()

# 生成可视化

generate_heatmap(full_df)

# AI分析

report = get_ai_analysis(

generate_analysis_prompt(full_df.head(15))

# 发送邮件

send_report(report)

# 清理临时文件

os.remove('temp/heatmap.png')

if __name__ == '__main__':

schedule.every().day.at('09:30').do(main) # 每日早间推送

schedule.every().day.at('16:30').do(main) # 下午补充推送

while True:

schedule.run_pending()

time.sleep(60)

2. 生产环境优化建议

- 反爬策略:使用代理IP池、随机请求头

- 错误重试:添加retry装饰器实现自动重试

- 本地存储:使用SQLite持久化存储历史数据

- 报警机制:通过Telegram Bot发送异常通知

六、方案优势与效果

1. 跨平台监控:同时覆盖微博、知乎、抖音等主流平台

2. 动态感知:每小时更新数据,识别突发热点

3. 深度洞察:AI分析事件传播规律与商业价值

4. 移动办公:邮件报告支持手机端查看

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多