如何一键展示全平台信息?Python手把手教你搭建自己的自媒体展示平台

news2024/11/26 10:01:26

前言

灵感源于之前写过的Github中Readme.md中可以插入自己的js图片和动态api解析模块,在展示方面十分的美观:

图片.png
这方面原理可以简化为,在Markdown中,你可以使用HTML标签来添加图像,就像这样:

  <tr>
    <td><img src="https://github-readme-stats.vercel.app/api?username=fanstuck&show_icons=true&count_private=true&theme=vue-light&hide_border=true" alt="fanstuck's GitHub stats" style="zoom:100%;" align="left"/></td>

具体来说,你可以使用<img>标签来嵌入图像,并使用src属性指定图像的URL。我们可以通过访问这个API端点,可以获取到一张包含指定GitHub用户统计信息的图像,然后可以在GitHub的README文件中使用这个图像来展示用户的GitHub统计信息。那么如果我们想要像大家展示我们其他媒体的数据,只需要开发出每个平台的相应的展示接口就可以集成到一个markdown文件展示了。

博主承诺每篇文章我都会尽可能将简化涉及到垂直领域的专业知识,转化为大众小白可以读懂易于理解的知识,将繁杂的程序创建步骤逐个拆解,以逐步递进的方式由难转易逐渐掌握并实践,欢迎各位学习者关注博主,博主将不断创作技术实用前沿文章。

拆解开发步骤

首先我们需要明白一点:https://github-readme-stats.vercel.app/api?username=fanstuck&show_icons=true&count_private=true&theme=vue-light&hide_border=true 这个https是一个GitHub API端点,用于生成用户的GitHub统计数据图像,通常用于在GitHub的README文件中展示用户的GitHub统计信息。参数username指定了用户的GitHub用户名(这里是"fanstuck"),其他参数用于指定要显示的统计信息,如图标、私有库数量等。

通过访问这个API端点,可以获取到一张包含指定GitHub用户统计信息的图像,然后可以在GitHub的README文件中使用这个图像来展示用户的GitHub统计信息。所以说我们需要开发对应解析获取不同平台主体信息的API,然后集成即可。这里我们以开发腾讯云社区博主用户为例,具体流程可以分为:

图片.png

数据获取

一般来说一个账户都有对应UID,相当于就是用户识别码,通过这个用户识别码可以访问到用户的主页:

图片.png

主页链接访问:https://cloud.tencent.com/developer/user/9822651,也是基于这个UID来访问,因此我们可以从网页参数直接访问获取,获取个人成就模块:

图片.png

获取这些数据的方法有很多种,我这里直接使用selenium方便:

def get_info(url):
    # 打开登录页面
    driver.get(url)
    user_articles_click=driver.find_elements(By.CSS_SELECTOR,"div.com-tab:nth-child(1) > div:nth-child(1) > ul:nth-child(1) > li:nth-child(3) > a:nth-child(1)")
    user_articles_click[0].click()
    list_articles=driver.find_elements(By.CSS_SELECTOR,"div.com-weak-section-bd > ul.com-3-article-panels > li.panel-cell")
    num_articles=len(list_articles)
    print("fanstuck的腾讯云数据:")
    data["创作文章数"] = num_articles
    print("创作文章数:{}".format(num_articles))

    user_info=driver.find_elements(By.CLASS_NAME, 'uc-achievement')
    for i in range(len(user_info)):
        if i == 0:
            text_elements =(user_info[i].find_elements(By.CSS_SELECTOR, 'a.uc-achievement-text'))
            rank_text  = text_elements[0].text
            rank_number =re.search(r'第\s*(\d+)\s*名', rank_text).group(1)
            data["2024年作者热度排名"] = int(rank_number)
            print(text_elements[0].text)
        else :
            text_elements = (user_info[i].find_elements(By.CSS_SELECTOR, 'span.uc-achievement-text'))
            if i == 1:
                text_1 = text_elements[0].text
                thumbs_up = re.search(r'\d+', text_1).group()
                data["获得赞同次数"] = int(thumbs_up)
            elif i == 2:
                text_2 = text_elements[0].text
                read_count = re.search(r'\d+\.?\d*', text_2).group()
                if "K" in text_2:
                    read_count = float(read_count) * 1000
                data["文章阅读次数"] = int(read_count)
            elif i == 3:
                text_3 = text_elements[0].text
                recommend = re.search(r'\d+', text_3).group()
                data["文章首页推荐次数"] = int(recommend)

            print(text_elements[0].text)

这里就不过得做实现的造轮子,大家可以看到展示结果:

图片.png

能够在后台获取到数据之后我们就可以着手来做可视化效果展示图片了。

数据可视化

我推荐大家可以试试echarts,我这里直接用pyechart开发:

def picture_data(data):
    # 提取排名数字
    rank_value = data.pop("2024年作者热度排名", None)  # 使用 pop 方法直接删除并返回排名值
    if rank_value:
        rank_text = "2024年作者热度排名: 第 {} 名".format(rank_value)
    else:
        rank_text = "2024年作者热度排名: 未知"
​
    # 创建柱状图
    bar = (
        Bar()
        .add_xaxis(list(data.keys()))
        .add_yaxis("", list(data.values()), color="#5470C6")
        .set_global_opts(title_opts=opts.TitleOpts(title=f"fanstuck腾讯云数据 - {rank_text}"),  # 将排名信息加入标题
                         legend_opts=opts.LegendOpts(is_show=False))
    )
    # 创建网格布局
    grid = Grid(init_opts=opts.InitOpts(width="1600px", height="800px"))
    grid.add(bar, grid_opts=opts.GridOpts(pos_left="10%", pos_right="60%"))
​
    # 使用 make_snapshot 保存为 PNG
    make_snapshot(snapshot, grid.render(), "fanstuck_data.png")

图片.png

大家可以不用我这个模板,条形图不太美观,数据维度不匹配,或者就直接展示数据,例如:

import matplotlib.pyplot as plt
from pylab import mpl
from IPython.core.interactiveshell import InteractiveShell
import seaborn as sns
InteractiveShell.ast_node_interactivity = "all"
​
plt.rcParams['font.sans-serif']=['Microsoft YaHei'] # 使用微软雅黑的字体
plt.style.use('ggplot')
#mpl.rcParams['font.sans-serif'] = ['FangSong'] # 指定默认字体
mpl.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示为方块的问题
​
def display(data):
    # 在画布上添加文本来展示数据
    y_pos = 0.8
    for key, value in data.items():
        plt.text(0.1, y_pos, f"{key}: {value}", fontsize=12, ha='left')
        y_pos -= 0.1
​
    # 移除坐标轴
    plt.axis('off')
​
    # 设置标题
    plt.title('Fanstuck 的腾讯云数据', fontsize=16, pad=20)
​
    # 显示图形
    plt.show()

图片.png
需要注意的是这里需要加上对汉字兼容,不然会出现方框占位。

API接口开发

之后我们进行API接口开发:该API在访问特定 URL 时返回上述图片,首先,确保你已经安装了 Flask。如果没有安装,可以通过运行 pip install Flask 来安装。

下面是创建这个 Flask 应用的步骤:

  1. 初始化 Flask 应用: 创建一个 Python 文件,比如 app.py,并在该文件中设置 Flask 应用。
  2. 定义路由和视图函数: 在应用中创建一个路由,该路由监听带有参数的 URL 请求。如果参数匹配 “fanstuck”,则返回图片;否则,返回一个错误消息或者其他内容。
  3. 返回图片: 为了返回图片,你可以使用 Flask 的 send_file 方法,该方法允许你发送文件内容作为响应。
# -*- coding:utf-8 -*-
# @Author: fanstuck
# @Time: 2024/3/28 10:23
# @File: app.py
from flask import Flask, send_file, request, abort
​
app = Flask(__name__)
​
@app.route('/image')
def image():
    # 获取 URL 参数
    keyword = request.args.get('keyword', '')
​
    # 检查参数是否为 'fanstuck'
    if keyword.lower() == 'fanstuck':
        # 返回图片
        return send_file('fanstuck_data_visualization.png', mimetype='image/png')
    else:
        # 如果参数不匹配,返回 404 错误
        abort(404)
​
if __name__ == '__main__':
    app.run(debug=True)

现在可以在markdown上面进行测试了:

<img src="http://127.0.0.1:5000/image?keyword=fanstuck" alt="Quiec's github stats" style="zoom: 33%;" />

图片.png

这些就大工告成了,当然想要追求图片极致美化的也可以尝试更多美化功能,我这里抛砖引玉,用JavaScript排版会更好看一点,那么本期文章就到这里结束了,

每篇文章我都会尽可能将简化涉及到垂直领域的专业知识,转化为大众小白可以读懂易于理解的知识,将繁杂的程序创建步骤逐个拆解,以逐步递进的方式由难转易逐渐掌握并实践,欢迎各位学习者关注博主,博主将不断创作技术实用前沿文章。

点关注,防走丢,如有纰漏之处,请留言指教,非常感谢

以上就是本期全部内容。我是fanstuck ,有问题大家随时留言讨论 ,我们下期见。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1563273.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

YOLOv9改进策略 :IoU优化| Inner-IoU基于辅助边框的IoU损失,高效结合新型边界框相似度度量(MPDIoU)| 二次创新

💡💡💡本文独家改进:Inner-IoU引入尺度因子 ratio 控制辅助边框的尺度大小用于计算损失,新型边界框相似度度量(MPDIoU)MPDIoU损失进行有效结合 💡💡💡适用场景:小目标数据集,进一步提升检测精度,强烈推荐 《YOLOv9魔术师专栏》将从以下各个方向进行创新: …

使用Flutter混淆技术保护应用隐私与数据安全

在移动应用开发中&#xff0c;保护应用代码安全至关重要。Flutter 提供了简单易用的混淆工具&#xff0c;帮助开发者在构建 release 版本应用时有效保护代码。本文将介绍如何在 Flutter 应用中使用混淆&#xff0c;并提供了相关的操作步骤和注意事项。 &#x1f4dd; 摘要 本…

酷得智能 提供多类型IC采购服务及全国性的方案开发定制

东莞市酷得智能科技有限公司成立于广东省东莞市松山湖高新产业园区&#xff0c;我们专注于电子类方案开发设计&#xff0c;提供多类型的IC采购服务。 方案定制服务包括以下几个方面&#xff1a; 功能定制&#xff1a;根据客户需求&#xff0c;我们可以为其定制各种有趣、富有挑…

存内计算是否可以应用于边缘计算

本篇文章聚焦存内计算应用&#xff0c;我们将从云边端计算各有优势出发&#xff0c;围绕边缘计算场景已有落地、赋能边缘计算存&#xff0c;算大有可为三个方面展开介绍&#xff0c;并围绕存算与边缘计算的结合应用展开构想与展望。 一.云边端计算 各有优势 云边端&#xff0…

游戏引擎架构01__引擎架构图

根据游戏引擎架构预设的引擎架构来构建运行时引擎架构 ​

【THM】SQL Injection(SQL注入)-初级渗透测试

简介 SQL(结构化查询语言)注入,通常称为 SQLi,是对 Web 应用程序数据库服务器的攻击,导致执行恶意查询。当 Web 应用程序使用未经正确验证的用户输入与数据库进行通信时,攻击者有可能窃取、删除或更改私人数据和客户数据,并攻击 Web 应用程序身份验证方法以获取私有数据…

Spring AOP + 自定义注解 实现公共字段的填充

Spring AOP 自定义注解 实现公共字段的填充 代码冗,不利于后期维护. 定义操作这些字段的方法类型 实现步骤&#xff1a; 自定义注解AutoFill,用于表示操作这些公共字段的方法自定义切面类AutoFillAspect,统一拦截&#xff0c;通过反射获取方法入参&#xff0c;并填充公共字段…

一个很变态,但能快速掌握软考高项的野路子

软考已经迫在眉睫&#xff0c;今天给各位整理了软考高项 信息系统项目管理师 的重要知识点口诀&#xff0c;只要大家能把这些都背下来&#xff0c;对你们掌握高项事倍功效&#xff0c;赶紧行动起来吧 2024年上半年信息系统项目管理师知识点口诀汇总 一、IT部分 智慧城市5个核心…

爬虫逆向实战(39)-某某兔装修网登陆(RSA)

一、数据接口分析 主页地址&#xff1a;某某兔装修网 1、抓包 通过抓包可以发现登陆是表单提交 2、判断是否有加密参数 请求参数是否加密&#xff1f; 通过查看“载荷”模块&#xff0c;可以发现有一个val和password的加密参数 请求头是否加密&#xff1f; 无响应是否加密…

RK3568驱动指南|第十四篇 单总线-第158章DS18B20编写字符设备驱动框架

瑞芯微RK3568芯片是一款定位中高端的通用型SOC&#xff0c;采用22nm制程工艺&#xff0c;搭载一颗四核Cortex-A55处理器和Mali G52 2EE 图形处理器。RK3568 支持4K 解码和 1080P 编码&#xff0c;支持SATA/PCIE/USB3.0 外围接口。RK3568内置独立NPU&#xff0c;可用于轻量级人工…

【微众银行笔试题汇总】 2024-03-31-微众银行春招笔试题-三语言题解(CPP/Python/Java)

&#x1f36d; 大家好这里是KK爱Coding &#xff0c;一枚热爱算法的程序员 ✨ 本系列打算持续跟新微众银行近期的春秋招笔试题汇总&#xff5e; &#x1f4bb; ACM银牌&#x1f948;| 多次AK大厂笔试 &#xff5c; 编程一对一辅导 &#x1f44f; 感谢大家的订阅➕ 和 喜欢&…

从小米造车引发对公司跨界的思考

目录 1. 十年布局 2. 人才战略和产品定位 3. 公司跨界启示 3月28日&#xff0c;小米新车发布会轰动全网&#xff0c;这是一场令人激动的发布会&#xff1b; 微博、小红书、知乎和朋友圈关于小米SU7价格、配置的话题一直挂在热搜&#xff1b;身边从老到少也都在讨论SU7&…

matlab中旋转矩阵函数

文章目录 matlab里的旋转矩阵、四元数、欧拉角四元数根据两向量计算向量之间的旋转矩阵和四元数欧拉角转旋转矩阵旋转矩阵转欧拉角旋转矩阵转四元数参考链接 matlab里的旋转矩阵、四元数、欧拉角 旋转矩阵dcmR四元数quatq[q0,q1,q2,q3]欧拉角angle[row,pitch,yaw] % 旋转矩阵…

HarmonyOS 应用开发之自定义组件冻结功能

自定义组件处于非激活状态时&#xff0c;状态变量将不响应更新&#xff0c;即Watch不会调用&#xff0c;状态变量关联的节点不会刷新。通过freezeWhenInactive属性来决定是否使用冻结功能&#xff0c;不传参数时默认不使用。支持的场景有&#xff1a;页面路由&#xff0c;TabCo…

提质增效|大型汽车制造业运维精细化管理建设实战

项目背景 某大型汽车制造企业随着数字化技术的深入应用&#xff0c;对运维在“质量与效率”方面的精细化管理有了更高的要求。借助云智慧运维指标体系实现了 IT 架构的智能化与可视化&#xff0c;高效解决系统显性问题&#xff0c;积极处理系统隐性问题&#xff0c;提升系统稳…

第四节 增加可选事件流操作

一、常见可选事件流案例说明 二、原型案件设置说明 1、设立元件 2、控制逻辑 设置对应矩形可选事件流面板状态&#xff0c;显示\隐藏 当前事件流提示元件&#xff0c;页面完成跳转设置。 3、添加可选事件 对于多个可选事件可以添加多个矩形进行引导&#xff0c;数量不定&…

卷积神经网络(CNN)的数学原理解析

文章目录 前言 1、介绍 2、数字图像的数据结构 3、卷积 4、Valid 和 Same 卷积 5、步幅卷积 6、过渡到三维 7、卷积层 8、连接剪枝和参数共享 9、卷积反向传播 10、池化层 11、池化层反向传播 前言 本篇主要分享卷积神经网络&#xff08;CNN&#xff09;的数学原理解析&#xf…

SSL安全证书多少钱?

SSL安全证书多少钱&#xff1f;单域名、多域名与通配符SSL证书的全面对比与价格分析。SSL&#xff08;Secure Sockets Layer&#xff09;证书作为一种加密技术&#xff0c;能够确保网站数据传输的安全性和可靠性&#xff0c;对于提升网站信誉和保护用户隐私具有至关重要的作用。…

【Spring】SpringBoot整合MybatisPlus的基本应用

&#x1f4dd;个人主页&#xff1a;哈__ 期待您的关注 一、MybatisPlus简介 先来看一下官方的简介吧。 MyBatis-Plus &#xff08;简称 MP&#xff09;是一个 MyBatis的增强工具&#xff0c;在 MyBatis 的基础上只做增强不做改变&#xff0c;为 简化开发、提高效率而生。Myb…

数据库:Redis数据库

一、非关系型数据库 1.什么是非关系型数据库 非关系型数据库&#xff08;Non-relational Database&#xff09;又称NoSQL数据库是一种不同于传统关系型数据库管理系统&#xff08;RDBMS&#xff09;的数据存储解决方案。NoSQL这个术语最初意味着"Not Only SQL"&…