这是我参与11月更文挑战的第2天,活动详情查看:2021最后一次更文挑战
一、前言
我们分享博客的方式有很多种,最常见的无非就是分享链接。或者是编辑一条消息,写上标题链接等东西。但是这种方式都不够直观,相比之下图片的方式要更引人注目。CSDN移动端提供了分享图的功能,但是展示的内容是固定的,所以我就想到用Python自己生成分享图。本文只是技术分享,所以在效果上没有下太多功夫,生成的图片比官方是要丑得多,还需包含。
二、爬取信息
我们要生成博客分析图,就需要先获得一些信息,像是作者的名字,头像,文章的摘要等。这就需要使用到爬虫了,先选取本人的一篇博客:学会这些Python美图技巧,就等着女朋友夸你吧,我们在浏览器打开,右击检查就可以看到下图:
在左上角的框我们可以看到作者的头像和名字,那就是我们需要的内容。我们先点击右边红框,然后在网页中点击我们需要的内容,比如ZackSock
,这样浏览器在源码部分会自动定位到该标签:
我们可以看到该标签是一个span
,而且class设置为name,这个时候我们就可以用BeautifulSoup解析,安装语句如下:
1 | bash复制代码pip install BeautifulSoup4 |
然后进行爬取:
1 | python复制代码import requests |
这样我们就将博主的名字爬了出来。通过这个方法我们还可以爬取头像,但是摘要就不知道怎么爬了。进行我的不专业分析,发现文章的主体都在一个id
为content_views
的div
中,如果文章格式比较规范的话,第一段非标题文字就在div
中第一个非空p
标签中。于是我们就可以用下面代码分析出摘要:
1 | python复制代码import requests |
爬取头像的算法也非常简单,代码如下:
1 | python复制代码import requests |
但是我们爬到的图片是正方形的,我们需要进行一个处理。
三、处理我们需要的内容
首先我们需要生成一个圆形的头像,这就需要用到Pillow模块,安装如下:
1 | python复制代码pip install pillow |
具体代码如下:
1 | python复制代码from PIL import ImageDraw |
另外,我们需要用一个二维码让别人可以跳转到我们的博客,这需要用到qrcode模块:
1 | python复制代码pip install qrcode |
生成二维码的代码如下,我们需要在add_data方法中传入博客地址:
1 | python复制代码import qrcode |
对qrcode模块有兴趣的读者可以观看:https://blog.csdn.net/ZackSock/article/details/105222763。
四、生成分享图
上面我们把准备工作做完了,可以开始我们的整合了。大家前期可以获取一些自己需要的信息然后按照自己的布局整合,这里我就是按照从上到下依次头像、名称、摘要、二维码的排序:
1 | python复制代码import re |
因为摘要比较长,所以我把摘要分成了数个长度为20的子串然后再写到图片上。
四、整合
我们将上面的函数整合一个类,完整代码如下:
1 | python复制代码import re |
上面就完整的实现了分享图的实现,下面是效果图:
我把原本的二维码替换成了图中的美女。我没有什么艺术细胞,大家可以发挥自己的想象定制一个更美观的分享图。
本文转载自: 掘金