Python采集微博评论做词云图

2024-01-08 19:31:19

嗨喽~大家好呀,这里是魔王呐 ? ~!

python更多源码/资料/解答/教程等 点击此处跳转文末名片免费获取

环境使用:

  • Python 3.10

  • Pycharm

第三方模块使用:

  • import requests >>> pip install requests

  • import wordcloud >>> pip install wordcloud

  • import jieba >>> pip install jieba

爬虫基本流程:

一. 数据来源分析
1. 明确需求: 明确采集的网站以及数据内容
    - 网址: https://weibo.com/2803301701/NxcPMvW2l
    - 数据: 评论内容
2. 抓包分析: 通过开发者工具进行抓包
    - 打开开发者工具: F12
    - 刷新网页
    - 通过关键字查找对应的数据
        关键字: 评论的内容
    数据包地址: https://weibo.com/ajax/statuses/buildComments?is_reload=1&id=4979141627611265&is_show_bulletin=2&is_mix=0&count=10&uid=2803301701&fetch_level=0&locale=zh-CN
二. 代码实现步骤
1. 发送请求 -> 模拟浏览器对于url地址发送请求
2. 获取数据 -> 获取服务器返回响应数据
3. 解析数据 -> 提取评论内容
4. 保存数据 -> 保存本地文件 (文本 csv Excel 数据库)

多页数据采集: 分析请求链接变化规律(主要看请求参数)

翻页: 点击下一页 / 滑动
flow: 0 多了这个参数
max_id: 第一页是没有 第二/三页一串数字
count: 第一页 10 第二/三页 20

代码展示

数据采集
'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:926207505
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
# 导入数据请求模块
import requests
import pandas as pd

# 创建空列表
lis = []
def get_content(max_id):
    """1. 发送请求 -> 模拟浏览器对于url地址发送请求"""
    # 模拟浏览器
    headers = {
        # Referer 防盗链
        'Referer':'https://weibo.com/2803301701/NxcPMvW2l',
        # User-Agent 用户代理
        'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36'
    }
    """
    https://weibo.com/ajax/statuses/buildComments?is_reload=1&id=4979141627611265&is_show_bulletin=2&is_mix=0&count=10&uid=2803301701&fetch_level=0&locale=zh-CN
        - 问号前面: 请求链接
        - 问号后面: 查询参数
    """
    # 请求网址
    url = 'https://weibo.com/ajax/statuses/buildComments'
    # 请求参数
    data = {
        'is_reload': '1',
        'id': '4979141627611265',
        'is_show_bulletin': '2',
        'is_mix': '0',
        'max_id': max_id,
        'uid': '2803301701',
        'fetch_level': '0',
        'locale': 'zh-CN',
    }
    # 发送请求
    response = requests.get(url=url, params=data, headers=headers)
    """2. 获取数据 -> 获取服务器返回响应数据"""
    json_data = response.json()
    """3. 解析数据 -> 提取评论内容"""
    # 提取评论所在列表
    content_list = json_data['data']
    # for循环遍历, 提取列表里面元素
    for index in content_list:
        content = index['text_raw']
        dit = {
            '内容': content
        }
        lis.append(dit)
        """保存数据"""
        with open('data.txt', mode='a', encoding='utf-8') as f:
            f.write(content)
            f.write('\n')
        print(content)
    next_num = json_data['max_id']
    return next_num


if __name__ == '__main__':
    lis = []
    max_id = ''
    for page in range(1, 11):
        max_id = get_content(max_id)

    df = pd.DataFrame(lis)
    df.to_excel('data.xlsx', index=False)
制作词云图
'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:926207505
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
# 导入结巴分词
import jieba
# 导入词云图模块
import wordcloud

"""词云分析"""
# 读取文件内容
f = open('data.txt', encoding='utf-8').read()
# 分词
txt = jieba.lcut(f)
# 把列表合并成字符串
string = ' '.join(txt)
# 制作词云图配置
wc = wordcloud.WordCloud(
    font_path='msyh.ttc',
    width=1000,  # 宽
    height=700, # 高
    background_color='white', # 背景颜色 默认黑色
)
# 导入内容
wc.generate(string)
wc.to_file('词云_3.png')
print(txt)

尾语

最后感谢你观看我的文章呐~本次航班到这里就结束啦 🛬

希望本篇文章有对你带来帮助 🎉,有学习到一点知识~

躲起来的星星🍥也在努力发光,你也要努力加油(让我们一起努力叭)。

最后,宣传一下呀~👇👇👇更多源码、资料、素材、解答、交流皆点击下方名片获取呀👇👇

文章来源:https://blog.csdn.net/python56123/article/details/135461414
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。