一文生成猫眼电影热榜词云
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 这两个关键的类。在本文中,我们将比较它们的特点、优缺点以及使用场景。…...
美国第三大财产和意外险公司利宝保险集团利用 OpenText EnCase 取证收集技术控制法律风险和成本
美国第三大财产和意外险公司利宝保险集团利用 OpenText EnCase 取证收集技术控制法律风险和成本 利宝保险集团通过内部取证收集技术控制法律风险和成本。OpenText EnCase Information Assurance(以前称为 EnCase eDiscovery)使保险公司巨头能够自信高效地…...
打包报错JavaScript heap out of memory
npm run build 的时候出现了Reached heap limit Allocation failed - JavaScript heap out of memory,报错信息如下图所示。 奇怪的时候这个报错信息在本地不会出现,通过jekins在服务器打包部署的时候才会出现。于是进入服务器执行下面一句代码ÿ…...
Android Camera FW 里的requestId和frameId
安卓相机frameworks里面经常出现requestId和frameId,最近简单看了一下代码,发现相关流程还是很复杂的,总结来看requestId 就是上层(java)发送的repeating(capture)请求的id,是从0开始递增的。 这是CameraD…...
代理IP与Socks5代理在技术世界的多元应用
在数字化时代,网络工程师的任务不仅是维护网络的稳定性,还需要应对各种技术挑战。代理IP与Socks5代理作为技术工具箱中的两把利器,在跨界电商、爬虫、出海业务、网络安全和游戏领域中发挥了关键作用。本文将深入探讨这两项技术在不同领域的多…...
计算机专业毕业设计项目推荐12-志愿者管理系统(Spring+Js+Mysql)
志愿者管理系统(SpringJsMysql) **介绍****各部分模块实现** 介绍 本系列(后期可能博主会统一为专栏)博文献给即将毕业的计算机专业同学们,因为博主自身本科和硕士也是科班出生,所以也比较了解计算机专业的毕业设计流程以及模式,在编写的过程…...
苹果文件传到mac电脑用什么软件?
在数字化时代,文件传输已经成为我们日常生活中不可或缺的一部分。然而,苹果用户在将手机文件传输到电脑时,往往会面临一些困扰。曾经的“文件传输助手”并不能完全满足用户的需求。于是,很多人开始寻找更便捷的解决方案。在本文中…...
深入理解Docker:简化部署与管理的利器
文章目录 引言Docker简介Docker的背景和发展Docker的优势和特点 Docker的基本概念和架构镜像(Image)容器(Container)仓库(Repository)Docker架构 Docker的常用命令和操作Docker的安装和配置Docker镜像的管理…...
软考对找工作有用吗?
软考是指软件技术专业资格考试,是由中国人力资源和社会保障部主管的一项国家级考试。软考的目标是评估和认证软件技术人员的专业能力,提高软件行业的整体素质和竞争力。那么,软考对找工作有用吗?本文将从以下几个方面进行分析。 首…...
Android系统启动之init进程启动+Zygote进程启动分析
一、基础概念理解 init进程 Android系统所有进程的祖先,是Android系统内核初始化完毕后,进入用户空间启动的第一个进程。 Android虚拟机 Dalvik虚拟机是谷歌自己设计的用于Android平台的虚拟机。Android4.4同时提供了Dalvik和ART虚拟机。Android5.0以后…...
微信这样的加人方式,既安全又解放双手
在当今竞争激烈的市场环境下,如何高效地管理和运营私域流量成为企业发展的关键。 1.批量自动化加好友的优势 (1)提高效率:批量自动化添加好友功能可以帮助企业添加大量潜在客户或目标客户。相比手动逐个添加好友,自动…...
游戏网站怎么做seo/网站seo
2019独角兽企业重金招聘Python工程师标准>>> nginx限速,带宽,IP; http://www.6san.com/1149/ 限制向客户端传送响应数据的速度,可以用来限制客户端的下载速度。参数rate的单位是字节/秒,0为关闭限速。 ngin…...
免费外贸网站有哪些/站长聚集地
#设置监听日志目录失败#LSNRCTL> set log_directory /u01/app/oracle/trace/listenerConnecting to (DESCRIPTION(ADDRESS(PROTOCOLtcp)(HOSToracle3.example.com)(PORT1521)))TNS-01251: Cannot set trace/log directory under ADR//如果listener.ora文件中参数DIAG_ADR_EN…...
烟台市住房和规划建设管理局网站/网上推广专员是什么意思
转载于:https://www.cnblogs.com/cicser/archive/2010/07/20/1781437.html...
做盗版小说网站能赚钱不/百度客服电话是多少
“要想保证皮带电子秤的精度,必须要对电子秤安装、调试的每一个步骤严格把关。”近期,安装维修中心副段长刘云多次叮嘱参与施工的电工段自动化班组职工。皮带电子秤依附于皮带运输机,它通过称重传感器感应皮带上物料的压力换算成皮带上物料的…...
南京百度网站建设/某网站seo诊断分析
本文价值与收获 看完本文后,您将能够作出下面的界面 Jietu20200324-1956092x.jpgJietu20200324-1956152x.jpgJietu20200324-210619.gif看完本文您将掌握的技能 获得项目的全部源码使用model editor使用Core Data新增记录从Core Data中读取记录List中显示读取的记录…...
苏州专业网站建设开发/正在直播足球比赛
输入一串字符,字符个数不超过100,且以“.”结束。 判断它们是否构成回文。【分析】所谓回文指从左到右和从右到左读一串字符的值是一样的,如12321,ABCBA,AA等。先读入要判断的一串字符(放入数组letter中),并记住这串字符的长度&am…...