(点击上方公众号,可快速关注一起学Python)

链接:

https://blog.csdn.net/weixin_43930694/article/details/98334465

一、项目简介

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.生成词云展示

(完)

看完本文有收获?请转发分享给更多人

关注「Python那些事」,做全栈开发工程师

点「在看」的人都变好看了哦

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

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

    一.项目简介 1.内容:循环抓取豆瓣影评中所有观众对<陈情令>的评论,存储在文本文档中,并运用可视化库--词云对其进行分析. 2.目标网站: https://movie.douban.co ...

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

最新文章

  1. NSString字符串常用知识点
  2. 常量元素记忆口诀_人体中的常量元素与微量元素
  3. MySQL的Redolog/Undolog/binlog日志
  4. 使用 KubernetesClient 操作 kubernetes
  5. Hibernate关联关系映射-----基于连接表的单向一对多映射配置
  6. 浅谈html的语义化和一些简单优化,浅谈HTML的语义化和一些简单优化
  7. XML 在SQLServer中的使用
  8. iOS底层探索之多线程(十三)—锁的种类你知多少?
  9. 2018最新hadoop服务器环境配置教程(附详细步骤)
  10. nodejs连接postgresql_PostgreSQL 使用 node-postgres 在 node.js 中的应用
  11. matlab中图例的字怎么改,matlab中legend函数在添加图例时的使用方法
  12. Java、python实现啊哈算法 —— chapter3 枚举 炸弹人
  13. 关闭cidaemon进程的方法
  14. 使用DISM启用或禁用Windows功能
  15. 蚂蚁开源 - 聚沙成塔,相信社区的力量 | ChinaOSC
  16. 大数据与算法系列之算法性能分析
  17. 时间触发嵌入式系统设计模式 读书笔记
  18. python批量查询两地的行驶距离
  19. 鸿蒙开发板怎么玩?Neptune开发教程---OpenHarmony开发体验-环境搭建-编译-烧录
  20. APP、小程序、H5

热门文章

  1. [云炬创业基础笔记]第一章创业环境测试6
  2. Java一行代码打印当前系统时间
  3. 科大星云诗社动态20211008
  4. 机器学习碎碎念:霍夫丁不等式
  5. 小波变换理解:消失矩、支撑长度的理解
  6. 线性判别分析LDA的数学原理(一)
  7. CRM系统开发经验谈
  8. FFmpeg入门之常用命令
  9. 单片机文件系统的学习
  10. idea怎么搜索文件——search everywhere