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

前言

灵感源于之前写过的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_articlesprint("创作文章数:{}".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].textrank_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].textthumbs_up = re.search(r'\d+', text_1).group()data["获得赞同次数"] = int(thumbs_up)elif i == 2:text_2 = text_elements[0].textread_count = re.search(r'\d+\.?\d*', text_2).group()if "K" in text_2:read_count = float(read_count) * 1000data["文章阅读次数"] = int(read_count)elif i == 3:text_3 = text_elements[0].textrecommend = 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 保存为 PNGmake_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.8for 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.mzph.cn/news/787450.shtml

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

相关文章

低噪声、轨至轨运算放大器芯片—— D721、D722、D724,适合用于音频领域

应用领域 D721、D722、D724是我们推荐的三款低噪声、轨至轨运算放大器芯片&#xff0c;其中D721为单运放&#xff0c;D722为双运放&#xff0c;D724为四运放。适合用于音频领域、传感器等的信号放大处理&#xff0c;比如K歌宝、音响、测距、滤波器、AD转换器前级信号处理等等。…

设计模式 - Provider 模式

在某些情况下&#xff0c;我们希望为应用程序中的许多&#xff08;如果不是全部&#xff09;组件提供数据。尽管我们可以使用 props 将数据传递给组件&#xff0c;但如果应用程序中的几乎所有组件都需要访问 prop 的值&#xff0c;这可能很难做到。 我们经常遇到所谓的属性钻探…

【Kotlin】Sequence简介

1 前言 序列&#xff08;Sequence&#xff09;是 Kotlin 中为方便操作集合及其元素而定制的接口&#xff0c;是一个延迟获取数据的集合&#xff0c;只有需要元素时才会生产元素。在处理大量数据时&#xff0c;序列可以显著地提升性能。 Sequence 类似 Java 中的 Stream&#xf…

亚信安慧AntDB:激荡数据浪潮,塑造智能新纪元

亚信安慧AntDB一直秉承着“技术生态”的理念&#xff0c;不断进行技术创新和功能增强&#xff0c;以保持与先进数据库系统的竞争力。作为一款致力于提升数据库处理性能和稳定性的系统&#xff0c;AntDB在技术上始终保持敏锐的洞察力&#xff0c;不断汲取国内外先进技术的精华&a…

大模型之路2:继续趟一条小路

继续趟一条小路&#xff0c;可谓是充满了曲折&#xff0c;当然&#xff0c;必不可少的还是坑。 吐槽 看过的喷友&#xff0c;其实你看完以后&#xff0c;大概率也就是和我一起骂骂街&#xff0c;因为....我也的确没理清楚。 我也不知道做错了什么&#xff0c;就是运行不过去…

达梦数据库日志文件管理

达梦数据库日志文件管理 联机重做日志管理归档日志文件管理开启归档模式&#xff1a;SQL开启归档模式&#xff1a;dmarch.ini归档文件切换和删除 联机重做日志管理 检查联机重做日志&#xff1a; select * from v$rlog; --CUR_FILE表示正在使用的日志文件编号select * fr…

【讲解下Gitea】

&#x1f308;个人主页:程序员不想敲代码啊 &#x1f3c6;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f44d;点赞⭐评论⭐收藏 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共…

实验二 数据库安全性技术(8.0)

实验二 数据库安全性技术&#xff08;8.0&#xff09; 制作不易&#xff01;点个关注&#xff01;给大家带来更多的价值&#xff01; 目录 实验二 数据库安全性技术&#xff08;8.0&#xff09;**制作不易&#xff01;点个关注&#xff01;给大家带来更多的价值&#xff01;**…

使用plasmo开发浏览器插件在网页指定位置添加自定义UI

使用plasmo开发浏览器插件的时候&#xff0c;有时候需要在指定网站的指定页面添加自定义的UI内容&#xff0c;如果通过content.js内容脚本去通过js创建的话&#xff0c;可就太麻烦了&#xff0c;要写不少的js代码。不过plasmo已经帮我们实现了这个功能&#xff0c;就是Content …

WRF vortex-following 设置

WRF&#xff08;Weather Research and Forecasting&#xff09;是一种用于天气和气候模拟的开源模型。在WRF中选择使用vortex-following方法进行模拟时&#xff0c;主要是为了更准确地捕捉气旋&#xff08;vortex&#xff09;的演变和特征。以下是详细的流程描述以及相关的name…

abc-347

title: abc 347 date: 2024-04-01 01:57:25 tags: 比赛 categories: 赛后思考与总结 A 思路 能够被整除的就输出 代码 void solve() {int n,k;cin >> n >> k;vector<int> vec;for(int i 1; i < n ; i ){int x; cin >> x;if(x % k 0) vec.push_…

【CAD建模号】学习笔记(一)

一、概述 CAD建模号是一款用于在智能手机及平板电脑等移动设备上进行三维建模的app&#xff0c;最初发布于2019年。 二、基本操作 手指直接点按&#xff0c;拖动来粗略创建和操作对象&#xff1b;双指缩放视图&#xff0c;双指移动视图。手指长按屏幕&#xff0c;出现红色小…

css-盒子阴影

1.box-shadow: 10px 20px 10px 10px blue; 参数对应顺序&#xff1a;上下&#xff0c;左右 &#xff0c;模糊程度&#xff0c;颜色 &#xff0c;阴影大小 2.box-shadow: 10px 20px 10px 20px blue,-10px -20px 10px 50px red; 负号就是相反方向 支持多个阴影 在后面加逗号 3…

汽车充电桩主板购买渠道汇总

随着充电桩设施的迅速普及&#xff0c;充电桩作为其中关键组件之一&#xff0c;市场需求不断增长。在互联网科技飞速发展的背景下&#xff0c;充电桩主板的采购渠道更加多元化&#xff0c;下面我们来探讨消费者、充电桩运营商和生产商可以从何处购买充电桩主板。 直接联系制造商…

elementUI 输入框按回车刷新页面问题

分析原因&#xff1a; 当 el-form 表单内只有一个 el-input 输入框时&#xff0c;且type为text类型时&#xff0c;在输入框内按回车就会触发表单的提交事件。 而当 el-form 表单内有多个 el-input 输入框时&#xff0c;按回车不会执行任何操作。 使用.prevent修饰符来阻止默…

Python读取PDF文字 去掉页眉页脚

使用PyMuPDF&#xff08;即fitz&#xff09;读取PDF中的text时&#xff0c;会把页码也读进来。所以&#xff0c;有时候就需要让程序忽略页眉和页脚&#xff0c;或者直接删除页眉和页脚。 根据fitz的文档&#xff1a;Page - PyMuPDF 1.24.0 documentation get_text的clip参数可…

10-代码随想35搜索插入位置

35.搜索插入位置 给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。如果目标值不存在于数组中&#xff0c;返回它将会被按顺序插入的位置。 你可以假设数组中无重复元素。 示例 1: 输入: [1,3,5,6], 5 输出: 2 示例 2: 输入: [1,3,5…

vue 父组件怎么获取子组件里面的data数据

在Vue中&#xff0c;父组件可以通过ref引用子组件&#xff0c;并通过$refs属性来访问子组件的数据。以下是实现步骤&#xff1a; 1. 在子组件中设置data&#xff1a;** 首先&#xff0c;在子组件中设置需要获取的数据&#xff0c;例如&#xff1a; // 子组件中 export defa…

AWS迁移教程,Redis迁移到Elasticache

当企业不断出海拓展业务&#xff0c;面临的挑战之一就是如何高效迁移应用程序及数据库至云端。为解决这一问题&#xff0c;AWS云专门提供多种简单且高效的迁移方式&#xff0c;进行帮助企业实现应用程序的平稳迁移&#xff0c;从而降低迁移过程中的风险和成本。下面九河云将为大…

小程序地理位置接口wx.getLocation申请审核解决方法(详细说明及避坑)

本人申请了三次才最终通过&#xff0c;简单说一下坑 前几天想实现定位功能改了一天代码手机上也不行。 晚上登上小程序管理界面才发现那个功能要申请。。。那就申请呗 1. 申请路径 小程序页面-开发-开发管理-接口设置-地理位置 之后就提交申请&#xff0c;两次都不过就不理解了…