美文网首页Python爬虫案例分享
Python爬取网易云歌曲评论,做词云分析

Python爬取网易云歌曲评论,做词云分析

作者: Python案例教学 | 来源:发表于2022-05-26 14:58 被阅读0次

    前言

    emmmm 没什么说的,想说的都在代码里

    环境使用

    • Python 3.8 解释器 3.10
    • Pycharm 2021.2 专业版
    • selenium 3.141.0

    本次要用到selenium模块,所以请记得提前下载好浏览器驱动,配置好环境

    代码实现

    先是安装、导入所需模块

    from selenium import webdriver  # 导入浏览器的功能
    import re   # 正则表达式模块, 内置
    import time   # 时间模块, 程序延迟
    

    1. 创建一个浏览器对象

    driver = webdriver.Chrome()
    

    2. 执行自动化

    driver.get('https://music.163.com/#/song?id=488249475')
    # selenium无法直接获取到嵌套页面里面的数据
    driver.switch_to.frame(0)  # switch_to.frame()  切换到嵌套网页
    driver.implicitly_wait(10)  # 让浏览器加载的时候, 等待渲染页面
    
    下拉页面, 直接下拉到页面的底部
    js = 'document.documentElement.scrollTop = document.documentElement.scrollHeight'
    driver.execute_script(js)
    

    3.解析数据

    divs = driver.find_elements_by_css_selector('.itm')  # 所有div  css语法: 定位到 html 数据/xpath/正则
    
    for div in divs:
        cnt = div.find_element_by_css_selector('.cnt.f-brk').text
    
        cnt = re.findall(':(.*)', cnt)[0]  # 中英文有区别
        print(cnt)
    

    保存数据

    翻页
    for page in range(10):  # 控制翻页  速度太快
        # 翻页 , 找到下一页标签, 点击?
        driver.find_element_by_css_selector('.znxt').click()
        time.sleep(1)
    # selenium  欲速则不达
    
    保存为txt文件
    with open('contend.txt', mode='a', encoding='utf-8') as f:
        f.write(cnt + '\n')
    

    运行代码得到结果

    再做个词云

    导入相关模块

    import jieba  # 中文分词库  pip install jieba
    import wordcloud  # 制作词云图的模块  pip install wordcloud
    import imageio
    

    读取文件数据

    with open('contend.txt', mode='r', encoding='utf-8') as f:
        txt = f.read()
    print(txt)
    

    词云图 分词<中文(词语)> 基于结果

    txt_list = jieba.lcut(txt)
    print('分词结果:', txt_list)
    

    合并

    string_ = ' '.join(txt_list)  # 1 + 1 = 2   字符串的基本语法
    print('合并分词:', string_)
    

    创建词云图

    wc = wordcloud.WordCloud(
        width=1000,  # 图片的宽
        height=800,  # 图片的高
        background_color='white',  # 图片的背景色
        font_path='msyh.ttc',  # 微软雅黑
        scale=15,  # 词云图默认的字体大小
        # mask=img,  # 指定词云图的图片
    
        # 停用词< 语气词, 助词,....
        stopwords=set([line.strip() for line in open('cn_stopwords.txt', mode='r', encoding='utf-8').readlines()] )
    )
    print('正在绘制词云图...')
    wc.generate(string_)  # 绘制词云图
    wc.to_file('out.png')  # 保存词云图
    print('词云图绘制完成...')
    

    最后效果

    相关文章

      网友评论

        本文标题:Python爬取网易云歌曲评论,做词云分析

        本文链接:https://www.haomeiwen.com/subject/ynbeprtx.html