一文生成猫眼电影热榜词云
1.爬取猫眼电影热榜数据
此次爬取的是电影票房的热榜电影名称,具体网站网址为猫眼电影热榜,经过实验观察后发现,此处的数据是通过ajax异步加载的,如果不相信可以使用request对当前网站网址发送请求,会发现无法获取电影热榜数据。
因此,我们需要按下F12打开开发者工具,选择网络,然后可以根据网页上的电影名搜索找到对应的ajax异步请求,根据异步请求找到对应数据所在的位置,最后获取我们所需要的电影热榜名单,写入python列表中即可。
找到热榜数据所在的位置后,可以直接编写python代码将其存入列表中,方便后序wordcloud库的使用,具体代码如下所示:
import requests
# 首先需要爬取热门电影
url = 'https://piaofang.maoyan.com/dashboard-ajax?orderType=0&uuid=18b09342ec12e-0604eb022bdfdc-26031e51-fa000-18b09342ec28d&timeStamp=1696666732579&User-Agent=TW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV2luNjQ7IHg2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzExNy4wLjAuMCBTYWZhcmkvNTM3LjM2&index=97&channelId=40009&sVersion=2&signKey=b65748f33df1de3fa1385172cf22dd86'
# UA伪装
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36'
}
response = requests.get(url=url, headers=headers)
# 设置响应编码
response.encoding = 'utf-8'
# 访问url后返回的是json数据
movieList = response.json()['movieList']['data']['list']
words = []# 定义词云列表 将爬取到的热榜电影写入列表中
for movie in movieList:words.append(movie['movieInfo']['movieName'])
print(words)
2.生成词云
要根据Python列表中的词语生成词云,你可以使用wordcloud库。wordcloud库提供了创建和自定义词云图像的功能。
当然,要使用肯定首先需要安装wordcloud和matplotlib模块,wordcloud用于创建词云对象,而matplotlib用于绘制图像展示。
pip install wordcloud
pip install matplotlib
安装上述模块完成后,我们可以简单编写一个生成词云的代码体验一下,具体实例代码如下所示:
from wordcloud import WordCloud
import matplotlib.pyplot as plt
# 词语列表
words = ["apple", "banana", "orange", "apple", "grape", "banana", "apple"]
# 将词语列表转换为以空格分隔的字符串
text = " ".join(words)
# 创建词云对象,并指定TrueType字体文件路径
font_path = "path/to/your/font.ttf" # 指定TrueType字体文件路径 替换为自己的ttf文件
wordcloud = WordCloud(width=800, height=400, font_path=font_path).generate(text)
# 绘制词云图像
plt.figure(figsize=(10, 5))
plt.imshow(wordcloud, interpolation="bilinear")
plt.axis("off")
plt.show()
上述代码唯一需要注意的便是,你需要下载TrueType字体文件路径,普通的字体文件可能无法正常显示,这里推荐大家根据自己的需求去Google Fonts和DaFont下载符合自己需求的TrueType字体文件,同时,TrueType字体文件都是ttf后缀结尾的。
3.解决可能出现的问题
如果你发现你下载TrueType字体文件没有任何报错,那么就可以跳过本节,直接看最后一部分,如果出现问题,看看是不是和我遇到的一样。我在上述网页下载字体文件并正确引用后,还出现wordcloud词云报错ValueError: Only supported for TrueType fonts,如果真的是这种情况,不需要犹豫,那就是你的模块版本需要更新了,在终端运行下面的命令,更新对应的模块即可解决问题。
pip install --upgrade pip
pip install --upgrade wordcloud
pip install --upgrade pillow
具体可以参考博客参考博客1和参考博客2,我解决问题就是按照里面博客的内容来的。
4.最终代码以及结果展示
如果直接将上述1-2部分的代码根据要求合并,可能生出的词云有点丑,因此我们可以简单调整。
当生成词云图像时,你可以通过调整一些参数来改善样式,使其更好看。以下是一些可以尝试的样式调整:
背景颜色(background_color):你可以指定词云的背景颜色,例如将其设置为白色或其他适合的颜色。可以使用RGB值或预定义的颜色名称。例如,background_color='white’将背景颜色设置为白色。
最大词数(max_words):你可以限制词云中显示的最大词数。可以根据需要设置合适的值。例如,max_words=50将限制词云中显示的词数为50个。
颜色映射(colormap):你可以选择不同的颜色映射方案来为词云中的词语选择颜色。可以使用预定义的颜色映射名称,例如colormap=‘viridis’。你也可以使用自定义的颜色映射。
字体大小范围(min_font_size和max_font_size):你可以指定词云中词语的字体大小范围。你可以根据需要设置最小和最大字体大小值。
完整的代码如下所示:
from wordcloud import WordCloud
import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties
import requests
# 首先需要爬取热门电影
url = 'https://piaofang.maoyan.com/dashboard-ajax?orderType=0&uuid=18b09342ec12e-0604eb022bdfdc-26031e51-fa000-18b09342ec28d&timeStamp=1696666732579&User-Agent=TW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV2luNjQ7IHg2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzExNy4wLjAuMCBTYWZhcmkvNTM3LjM2&index=97&channelId=40009&sVersion=2&signKey=b65748f33df1de3fa1385172cf22dd86'
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36'
}
response = requests.get(url=url, headers=headers)
response.encoding = 'utf-8'
# 访问url后返回的是json数据
movieList = response.json()['movieList']['data']['list']
words = []# 定义词云列表 将爬取到的热榜电影写入列表中
for movie in movieList:words.append(movie['movieInfo']['movieName'])
print(words)# 将词语列表转换为以空格分隔的字符串
text = " ".join(words)# 创建词云对象,并指定TrueType字体文件路径
font_path = "./字体文件/Noto_Sans_SC/NotoSansSC-VariableFont_wght.ttf" # 指定TrueType字体文件路径
# 加载字体文件
font_prop = FontProperties(fname=font_path)
# 创建词云对象,并指定字体属性和样式调整
wordcloud = WordCloud(width=800,height=400,font_path=font_path,background_color='white', # 设置背景颜色为白色max_words=60, # 限制词云中显示的最大词数为50个colormap='viridis', # 使用颜色映射方案为viridismin_font_size=10, # 设置词云中词语的最小字体大小max_font_size=200 # 设置词云中词语的最大字体大小
).generate(text)# 绘制词云图像
plt.figure(figsize=(10, 5))
plt.imshow(wordcloud, interpolation="bilinear") #
plt.axis("off") #禁用坐标系
plt.show()
运行后的结果如下所示:
相关文章:

一文生成猫眼电影热榜词云
1.爬取猫眼电影热榜数据 此次爬取的是电影票房的热榜电影名称,具体网站网址为猫眼电影热榜,经过实验观察后发现,此处的数据是通过ajax异步加载的,如果不相信可以使用request对当前网站网址发送请求,会发现无法获取电影…...
监控脚本展示
需求: 监控SVQC,SVCD,FHTC,FHQC,FHCD文件的生成 监控服务器:10.10.3.56 监控路径:/data/app/datafile/ftp/qdttec/10000002/download/yyyyMMdd/* 监控时间:每天7点开始,2…...

【重拾C语言】五、模块化程序设计——函数(定义、调用、参数传递、结果返回、函数原型;典例:打印字符图形、验证哥德巴赫猜想)
目录 前言 五、模块化程序设计——函数 5.1 计算三角形的重心 5.2 函数 5.2.1 函数定义 5.2.2 函数调用 a. 函数调用的形式和过程 b. 参数传递 值传递 指针传递 c. 函数结果返回 5.2.3 函数原型(先调用后定义) 5.3 程序设计实例 5.3.1 打印…...
Unity实现设计模式——迭代器模式
Unity实现设计模式——迭代器模式 迭代器模式是一种行为型设计模式,它提供了一种统一的方式来访问集合对象中的元素,而不是暴露集合内部的表示方式。简单地说,就是将遍历集合的责任封装到一个单独的对象中,我们可以按照特定的方式…...

【数据结构与算法】之“堆”介绍
目录 堆的基本存储 一、概念及其介绍 二、适用说明 三、结构图示 堆的 shift up 堆的 shift down 基础堆排序 一、概念及其介绍 二、适用说明 三、过程图示 优化堆排序 索引堆及其优化 一、概念及其介绍 二、适用说明 三、结构图示 堆的基本存储 一、概念及其介…...
ncnn Fatal signal 11 (SIGSEGV) 使用GPU加速崩溃
如果你的报错堆栈中包含以下信息,其中的关键信息是 anon:dalvik-classes2.dex extracted in memory Fatal signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x3c in tid 8619 (eplabv3plusncnn), pid 8619 () 2023-10-07 15:48:31.395 9793-9793 DEBUG …...

计算机考研 | 2018年 | 计算机组成原理真题
文章目录 【计算机组成原理2018年真题44题-15分】【第一步:信息提取】【第二步:具体解答】 【计算机组成原理2018年真题45题-8分】【第一步:信息提取】【第二步:具体解答】 【计算机组成原理2018年真题44题-15分】 某计算机采用页…...
用Configuration注解的方式写一个java过滤器的详细实例?
在Java中,可以使用Configuration注解和Spring框架来创建和配置过滤器。下面是一个详细的示例: 首先,创建一个实现javax.servlet.Filter接口的过滤器类,例如MyFilter: import javax.servlet.*; import java.io.IOExce…...

基于Springboot实现旧物置换网站平台演示【项目源码+论文说明】分享
基于Springboot实现旧物置换网站平台演示 摘要 随着时代在一步一步在进步,旧物也成人们的烦恼,许多平台网站都在推广自已的产品像天猫、咸鱼、京东。所以开发出一套关于旧物置换网站成为必需。旧物置换网站主要是借助计算机,通过对用户进行管…...

想要精通算法和SQL的成长之路 - 存在重复元素
想要精通算法和SQL的成长之路 - 存在重复元素 前言一. 存在重复元素II二. 存在重复元素III2.1 基于红黑树增删改查 前言 想要精通算法和SQL的成长之路 - 系列导航 一. 存在重复元素II 原题链接 思路: 我们用HashSet存储元素,做到去重的效果。同时存储…...

使用华为eNSP组网试验⑸-访问控制
今天练习使用华为sNSP模拟网络设备上的访问控制,这样的操作我经常在华为的S7706、S5720、S5735或者H3C的S5500、S5130、S7706上进行,在网络设备上根据情况应用访问控制的策略是一个网管必须熟练的操作,只是在真机上操作一般比较谨慎ÿ…...

iPhone苹果手机闹钟智能跳过节假日怎么设置?
国内绝大多数的手机用户使用的操作系统只有三个,安卓、鸿蒙和苹果的ios。而iPhone苹果手机的忠实用户是非常多的,所以日积月累中用户数量也就非常庞大,并且相当一部分用户都是上班族。而工作忙碌的上班族因为事情比较多,为了避免自…...

TenDB Cluster 简介
文章目录 1.简介2.TSpider3.TenDB4.Tdbctl5.TenDB Cluster Operator参考文献 1.简介 TenDB Cluster 是腾讯游戏 CROS DBA 团队提供的 MySQL 分布式关系型数据库解决方案。主要特点包括:透明分库分表、高可用的 MySQL 集群服务,透明及在线的扩容及缩容&a…...

【刷题笔记10.6】LeetCode:翻转二叉树
LeetCode:翻转二叉树 一、题目描述 给你一颗二叉树的根节点root,翻转这颗二叉树,并返回其根节点。 二、分析 我们在做二叉树题目时候,第一想到的应该是用 递归 来解决。 仔细看下题目的 输入 和 输出,输出的左右…...

【高阶数据结构】图详解第一篇:图的基本概念及其存储结构(邻接矩阵和邻接表)
文章目录 1. 图的基本概念1.1 什么是图1.2 有向图和无向图1.3 完全图1.4 邻接顶点1.5 顶点的度1.6 路径1.7 路径长度1.8 简单路径与回路1.9 子图1.10 连通图1.11 强连通图1.12 生成树 2. 图的存储结构2.1 邻接矩阵2.2 邻接矩阵代码实现结构定义构造函数添加边打印图测试 2.3 邻…...
IPV4跟IPV6的区别
如今互联网快速发展ipv4已经满足不了现在的需求,那么这时候就需要用更大的地址空间来代替,这时候ipv6就可以满足这一需求,相比ipv4它有更大的地址空间可供使用。下面我将分享一下有何区别。 IPv4与IPv6之间的区别: 1、地址长度的区别:IPv4具…...

利用fitnesse实现api接口自动化测试
上午在园子里乱逛,看了不少小伙伴们分享的接口测试方面的知识,仔细想想,我做接口测试也有几个年头了,大家所叙述到的一些经验或多或少,我也曾遇到过,突然意识到知识的点滴积累是多么的重要,我记…...
【LeetCode】1154.一年中的第几天
题目描述: 给你一个字符串 date ,按 YYYY-MM-DD 格式表示一个 现行公元纪年法 日期。返回该日期是当年的第几天。 示例 1: 输入:date "2019-01-09" 输出:9 解释:给定日期是2019年的第九天。示…...

4.物联网射频识别,RFID开发【智能门禁项目】
补充:学习路径 一。项目介绍及需求分析 1.酒店智能门禁使用场景介绍 1.客人入住 客人在前台办理入住手续,前台管理员通过门禁管理系统为客户开一张门禁卡 客户持卡到相应客房,用IC 卡刷卡开门 客人过了入住时间后,卡自动失效&a…...
CompletableFuture 和 Future 的选择,以及CompletableFuture的用法
在 Java 编程中,异步编程是一种重要的技术,它允许你在执行长时间运行的任务时不会阻塞主线程。为了支持异步编程,Java 提供了 Future 和 CompletableFuture 这两个关键的类。在本文中,我们将比较它们的特点、优缺点以及使用场景。…...
[特殊字符] 智能合约中的数据是如何在区块链中保持一致的?
🧠 智能合约中的数据是如何在区块链中保持一致的? 为什么所有区块链节点都能得出相同结果?合约调用这么复杂,状态真能保持一致吗?本篇带你从底层视角理解“状态一致性”的真相。 一、智能合约的数据存储在哪里…...

多云管理“拦路虎”:深入解析网络互联、身份同步与成本可视化的技术复杂度
一、引言:多云环境的技术复杂性本质 企业采用多云策略已从技术选型升维至生存刚需。当业务系统分散部署在多个云平台时,基础设施的技术债呈现指数级积累。网络连接、身份认证、成本管理这三大核心挑战相互嵌套:跨云网络构建数据…...

Flask RESTful 示例
目录 1. 环境准备2. 安装依赖3. 修改main.py4. 运行应用5. API使用示例获取所有任务获取单个任务创建新任务更新任务删除任务 中文乱码问题: 下面创建一个简单的Flask RESTful API示例。首先,我们需要创建环境,安装必要的依赖,然后…...
DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径
目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...
Java如何权衡是使用无序的数组还是有序的数组
在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…...

相机从app启动流程
一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...
Python实现简单音频数据压缩与解压算法
Python实现简单音频数据压缩与解压算法 引言 在音频数据处理中,压缩算法是降低存储成本和传输效率的关键技术。Python作为一门灵活且功能强大的编程语言,提供了丰富的库和工具来实现音频数据的压缩与解压。本文将通过一个简单的音频数据压缩与解压算法…...
智能职业发展系统:AI驱动的职业规划平台技术解析
智能职业发展系统:AI驱动的职业规划平台技术解析 引言:数字时代的职业革命 在当今瞬息万变的就业市场中,传统的职业规划方法已无法满足个人和企业的需求。据统计,全球每年有超过2亿人面临职业转型困境,而企业也因此遭…...
在鸿蒙HarmonyOS 5中使用DevEco Studio实现指南针功能
指南针功能是许多位置服务应用的基础功能之一。下面我将详细介绍如何在HarmonyOS 5中使用DevEco Studio实现指南针功能。 1. 开发环境准备 确保已安装DevEco Studio 3.1或更高版本确保项目使用的是HarmonyOS 5.0 SDK在项目的module.json5中配置必要的权限 2. 权限配置 在mo…...

Java设计模式:责任链模式
一、什么是责任链模式? 责任链模式(Chain of Responsibility Pattern) 是一种 行为型设计模式,它通过将请求沿着一条处理链传递,直到某个对象处理它为止。这种模式的核心思想是 解耦请求的发送者和接收者,…...