使用python制作专属的微博热搜排名图

早前向大家介绍了如何利用简单的API 接口抓取微博当刻的热搜排名,抓取到的数据除了可以做数据分析外,另一样更简单可做的就是资讯图,例如制作每天Top 50 的资讯图,这类图大多数都是样式重复,变化的都是内容,数据方面可以使用定时爬虫抓取,抓取数据的代码可参考早前的博文,样式方面可采用固定的图档,配合爬取的数据使用程式定时编制,实现全自动生成微博热搜排名图。 相比起直接使用手机网页截图发文,自制的资讯图更能突出博主的用心制作,更具特色。

以下部份我将讲解如何使用Python 制作微博热搜排名图,下图是完成后的最终效果

图像处理部份是使用 pillow 这个程式库: 所以首先要先安装pillow

pip install pillow

安装完成后,便可以编写主要代码,我采用了物件导向的程式设计,主要的代码都封装在一个名为ImageDrawer 的class 中

首先在建构函式传入使用到的热搜数据和热搜的时间

整个绘图的逻辑我都放在draw 这个方式内

首先定义一些基本参数


整张图片的宽是750px, 整体高度是由banner 的高度(350px) 再加上每笔数据显示的高度(52px) * 多少笔数据
其余变数是字体大小,文字颜色、背景颜色、底线颜色和星期等等。

第二步是调用pillow 程式库去绘画底图,底图是我使用Canva 自制的,大750px * 350px

在这里我们会调用pillow 程式库的三个方法,
使用Image.new 在记忆体内构建一张图片
调用Image.open 读取预先制作的图片,再调用Image 物件的paste 方法把预制图贴在新的图片内。完成以上的编程步骤后, 调用ImageDraw 模组,完成整个绘图工作

调用ImageDraw.Draw 建立一个ImageDraw 物件去处理刚刚建立的image
我在这张图内使用了黑体(Heit)和得意黑(SmileySans) 两种字体,分别用于
数字和普通文字。 图片的主要部份可分为日期和热搜标题两部份:
日期部份使用了ImageDrawer的text 和rectangle 方法,text方法是把文字输出到底图上,rectangle方法用作绘画分隔日期标题和热搜内容的底线

热搜贴文方面,使用for loop  把每条的热搜绘画在图片上。由于图片的顶部已预留横额和日期标标题,所以开始的Y轴位置在410

最后定义输出图片的方法,完成图片存档。

现在,作为博主的你便可以每天自动化生成属于你的微博热搜排名图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值