一、项目简介

1.内容:循环抓取豆瓣影评中所有观众对《陈情令》的评论,存储在文本文档中,并运用可视化库--词云对其进行分析。

2.目标网站:

https://movie.douban.com/subject/27195020/comments?start=

3.使用软件:pycharm

4.使用 python3.7 版本

5.涉及的python类库:requests、lxml、wordcloud、numpy、PIL、jieba

二、具体思路

1.安装、导入相应的类库(本机已安装类库)

import requestsfrom lxml import etree #xpathfrom wordcloud import WordCloudimport PIL.Image as image  #引入读取图片的工具import numpy as npimport jieba   # 分词

2.确定网页,获取请求头,解决反爬机制,并且循环获取所有页面

#获取html源代码def getPage(url):    headers = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64)"" AppleWebKit/537.36 (KHTML, like Gecko)"" Chrome/63.0.3239.132 Safari/537.36"    }    response = requests.get(url,headers = headers).textreturn response

#循环获得所有页面的urldef all_page():    base_url = "https://movie.douban.com/subject/27195020/comments?start="#列表存放所有的网页,共10页    urllist = []for page in range(0,200,20):        allurl = base_url+str(page)        urllist.append(allurl)return urllist

3.运用xpath获取短评

#解析网页def parse():#列表存放所有的短评    all_comment = []    number = 1for url in all_page():#初始化        html = etree.HTML(getPage(url))#短评        comment = html.xpath('//div[@]//p/span/text()')        all_comment.append(comment)        print('第'+str(number)+'页解析并保存成功')        number += 1return all_comment

4.存入txt文档

#保存为txtdef save_to_txt():    result = parse()for i in range(len(result)):with open('陈情令评论集.txt','a+',encoding='utf-8') as f:            f.write(str(result[i])+'\n')  #按行存储每一页的数据            f.close()

5.将文档的短评进行分词

#将爬取的文档进行分词def trans_CN(text):    word_list = jieba.cut(text)#分词后在单独个体之间加上空格    result = " ".join(word_list)return result

6.制作词云

#制作词云def getWordCloud():    path_txt = "陈情令评论集.txt"                #文档    path_jpg = "1.jpg"                          #词云形状图片    path_font = "C:\\Windows\\Fonts\\msyh.ttc"  #字体

    text = open(path_txt,encoding='utf-8').read()

#剔除无关字    text = text.replace("真的"," ")    text = text.replace("什么", " ")    text = text.replace("但是", " ")    text = text.replace("而且", " ")    text = text.replace("那么", " ")    text = text.replace("就是", " ")    text = text.replace("可以", " ")    text = text.replace("不是", " ")

    text = trans_CN(text)    mask = np.array(image.open(path_jpg))  #词云图案    wordcloud = WordCloud(        background_color='white',   #词云背景颜色        mask=mask,        scale=15,        max_font_size=80,        font_path=path_font    ).generate(text)

    wordcloud.to_file('陈情令评论词云.jpg')

三、代码生成

#!/usr/bin/env python#-*- coding:utf-8 -*-#author : Only  time:2019/8/3 0002

import requestsfrom lxml import etree #xpathfrom wordcloud import WordCloudimport PIL.Image as image  #引入读取图片的工具import numpy as npimport jieba   # 分词

#获取html源代码def getPage(url):    headers = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64)"" AppleWebKit/537.36 (KHTML, like Gecko)"" Chrome/63.0.3239.132 Safari/537.36"    }    response = requests.get(url,headers = headers).textreturn response

#获得所有页面def all_page():    base_url = "https://movie.douban.com/subject/27195020/comments?start="#列表存放所有的网页,共10页    urllist = []for page in range(0,200,20):        allurl = base_url+str(page)        urllist.append(allurl)return urllist

#解析网页def parse():#列表存放所有的短评    all_comment = []    number = 1for url in all_page():#初始化        html = etree.HTML(getPage(url))#短评        comment = html.xpath('//div[@]//p/span/text()')        all_comment.append(comment)        print('第'+str(number)+'页解析并保存成功')        number += 1return all_comment

#保存为txtdef save_to_txt():    result = parse()for i in range(len(result)):with open('陈情令评论集.txt','a+',encoding='utf-8') as f:            f.write(str(result[i])+'\n')  #按行存储每一页的数据            f.close()

#将爬取的文档进行分词def trans_CN(text):    word_list = jieba.cut(text)#分词后在单独个体之间加上空格    result = " ".join(word_list)return result

#制作词云def getWordCloud():    path_txt = "陈情令评论集.txt"    path_jpg = "1.jpg"    path_font = "C:\\Windows\\Fonts\\msyh.ttc"

    text = open(path_txt,encoding='utf-8').read()

#剔除无关字    text = text.replace("真的"," ")    text = text.replace("什么", " ")    text = text.replace("但是", " ")    text = text.replace("而且", " ")    text = text.replace("那么", " ")    text = text.replace("就是", " ")    text = text.replace("可以", " ")    text = text.replace("不是", " ")

    text = trans_CN(text)    mask = np.array(image.open(path_jpg))  #词云背景图案    wordcloud = WordCloud(        background_color='white',        mask=mask,        scale=15,        max_font_size=80,        font_path=path_font    ).generate(text)    wordcloud.to_file('陈情令评论词云.jpg')

#主函数if __name__ == '__main__':    save_to_txt()    print('所有页面保存成功')    getWordCloud()    print('词云制作成功')

四、结果

1.运行结果

2.生成的短评文档内容

3.生成词云展示

powerbi python词云图_Python 练手项目: 抓取豆瓣陈情令评论,并制作词云图相关推荐

  1. python 制作高斯mask_Python3 练手项目: 抓取豆瓣陈情令评论,并制作词云图

    (点击上方公众号,可快速关注一起学Python) 链接: https://blog.csdn.net/weixin_43930694/article/details/98334465 一.项目简介 1 ...

  2. 利用python爬虫抓取虎扑PUBG论坛帖子并制作词云图

    作为一个PUBG迷,刷论坛是每天必不可少的事,上面有很多技术贴和职业比赛的帖子,突发奇想,想知道论坛里谈论最多的是什么,便做了一个爬虫爬取了论坛上最新的帖子标题和部分回复,然后利用jieba与word ...

  3. python新手项目-推荐:一个适合于Python新手的入门练手项目

    原标题:推荐:一个适合于Python新手的入门练手项目 随着人工智能的兴起,国内掀起了一股Python学习热潮,入门级编程语言,大多选择Python,有经验的程序员,也开始学习Python,正所谓是人 ...

  4. 一个适合于Python 初学者的入门练手项目

    随着人工智能的兴起,国内掀起了一股Python学习热潮,入门级编程语言,大多选择Python,有经验的程序员,也开始学习Python,正所谓是人生苦短,我用Python 有个Python入门练手项目, ...

  5. 推荐 Python 十大经典练手项目,让你的 Python 技能点全亮!

    前言:如果有人问:"Python还火吗?""当然,很火.""哪能火多久呢?""不知道." 技术发展到现在衍生出许多种编程 ...

  6. python新手小项目-推荐:一个适合于Python新手的入门练手项目

    随着人工智能的兴起,国内掀起了一股Python学习热潮,入门级编程语言,大多选择Python,有经验的程序员,也开始学习Python,正所谓是人生苦短,我用Python 有个Python入门练手项目, ...

  7. python适合做什么生意_适合Python的5大练手项目,你练了么?

    在练手项目的选择上,还存在疑问?不知道要从哪种项目先下手? 首先有两点建议: 最好不要写太应用的程序练手,要思考什么更像是知识,老只会写写爬虫是无用的,但是完全不写也不行. 对于练手的程序,要注意简化 ...

  8. python新手程序_推荐:一个适合于Python新手的入门练手项目

    随着人工智能的兴起,国内掀起了一股Python学习热潮,入门级编程语言,大多选择Python,有经验的程序员,也开始学习Python,正所谓是人生苦短,我用Python 有个Python入门练手项目, ...

  9. python新手入门项目推荐_推荐:一个适合于Python新手的入门练手项目

    随着人工智能的兴起,国内掀起了一股Python学习热潮,入门级编程语言,大多选择Python,有经验的程序员,也开始学习Python,正所谓是人生苦短,我用Python 有个Python入门练手项目, ...

最新文章

  1. 【idea】Springboot整合jpa
  2. 编程语言也有环保排队?垫底的居然是它...
  3. solr源码分析之数据导入DataImporter追溯。
  4. Logstash同步mysql一对多数据到ES(踩坑日记系列)
  5. 基于用例点来度量软件规模并管理进度 之二
  6. java取模运算_Java的四则运算符与取模运算符
  7. 作为研发工程师,不可不知的运维技能武器库,这些你知道吗
  8. testflight怎么做版本更新_《动物森友会》万圣节版本更新后,别忘了做这五件事情...
  9. RxJava -- 从 create 开始 (一)
  10. webstorm小程序插件和中文插件
  11. PPT文件太大怎么办?如何压缩PPT?这几招帮你搞定
  12. 运营Tumblr的几个建议-教你成为tumblr达人
  13. 【WiFi】hostapd 配置80M频宽某些信道启动失败问题分析及解决
  14. c语言tab什么意思_C语言入门学好这一篇就足够了!C语言所有的知识点
  15. R语言ggplot2可视化:使用geom_step可视化阶梯图、阶梯线图、可视化分组阶梯线图
  16. 裴蜀定理(Noi Color)应用
  17. 计算机信息专业考研院校排名,2017年电子信息工程专业考研院校排名
  18. java csv 数组_使用csv文件的输入填充结构数组
  19. 制作CentOS系统启动盘(U盘)
  20. ​力扣解法汇总1728-猫和老鼠 II

热门文章

  1. matlab 1 3倍频分析,[转载]1/3倍频程及Matlab程序实现
  2. SQL优化理解的一点方法
  3. 三星在美最高法院吐苦水,苹果设计专利索赔太多
  4. [20170302]什么是fuzzy.txt
  5. iOS.ReactNative-3-about-viewmanager-uimanager-and-bridgemodule
  6. 理解 OpenStack Swift (3):监控和一些影响性能的因素 [Monitoring and Performance]
  7. PHP 直接在共享内存中存储数据集
  8. Qt 的udpSocket通信
  9. 数据库(mysql)基本语句操作
  10. 人力资源大数据公司_大数据与人力资源相结合,平衡透明度和隐私