【腾讯云 TDSQL-C Serverless产品体验】抓取processon热门模版的标题生成词云

news2024/11/18 11:30:26

【腾讯云 TDSQL-C Serverless产品体验】抓取processon热门模版的标题生成词云

serverless服务是腾讯云自研的新一代云原生关系型数据库TDSQ L-C的无服务器架构版,是全Serverless架构的云原生数据库

前言

体验了一下腾讯云刚出的TDSQL-C Serverless,使用它存储数据比较方便,能根据负载动态扩容,现在我们正好用来爬下数据分析一下。

数据源

processOn是比较常用的画图平台,它的模版也是比较丰富,但是基本上都要钱。。。
现在我们爬一下数据,看下这些推荐的模版标题的构成,即什么样的词汇比较容易被推荐,还有它的价格分布是怎样的
在这里插入图片描述

项目目录

config存储配置文件,dao负责链接数据库,logic下面就是具体的逻辑,包括爬虫、分析、词云分词。
在这里插入图片描述

爬虫

具体爬虫代码如下,这里才有异步存储,也正好测试下数据库的性能如何

import (
	"fmt"
	"github.com/anaskhan96/soup"
	"github.com/spf13/cast"
	"strings"
	"sync"
	"td_test/logic/wordcloud"
)

func Crawl(url string) error {
	res, err := soup.Get(url)
	if err != nil {
		return err
	}
	var wg sync.WaitGroup
	doc := soup.HTMLParse(res)
	// 模版列表
	tempList := doc.FindAll("div", "class", "list-item-content")
	for _, item := range tempList {
		// 模版详情数据
		detail := item.Find("div", "class", "temp-item-detail")
		title := detail.Find("h2").Text()
		// view clone like数量
		var countList []int
		for _, count := range detail.FindAll("span", "class", "count") {
			countList = append(countList, cast.ToInt(count.Text()))
		}
		// 获取价格
		owner := item.Find("div", "class", "temp-item-owner")
		priceStr := owner.Find("span", "class", "count").Text()
		var price float32
		if priceStr != "免费" {
			priceStr = strings.Trim(priceStr, "¥")
			price = cast.ToFloat32(priceStr)
		}
		// 异步存储
		go func() {
			wg.Add(1)
			defer wg.Done()
			saveToDB(title, countList, price)
			// 对标题进行分词并存储
			wordcloud.SplitTitleAndSave(title)
		}()
	}
	wg.Wait()
	return nil
}

分词

分词库用的是结巴分词,直接用它的精准模式即可

import (
	"github.com/yanyiwu/gojieba"
)

var splitClient *gojieba.Jieba

func init() {
	splitClient = gojieba.NewJieba()
}
func SplitTitleAndSave(title string) {
	words := splitClient.Cut(title, true)
	for i := range words {
		m := &TemplateTitleWordModel{Word: words[i]}
		m.Save()
	}
	return
}

分析词云和价格饼状图

词云和饼状图都是用的github.com/go-echarts/go-echarts,使用比较简单,词云需要把数据从数据库中提取出来塞进去就好了,词云代码:

func getTitleListFromDB() []opts.WordCloudData {
	var wordList []string
	dao.GetDB().Raw("select word from template_title_words").Scan(&wordList)
	wordMap := make(map[string]int)
	for i := range wordList {
		wordMap[wordList[i]]++
	}
	ans := make([]opts.WordCloudData, 0)
	for k, v := range wordMap {
		ans = append(ans, opts.WordCloudData{Value: v, Name: cast.ToString(k)})
	}
	return ans
}
func createWordCloud(title string, data []opts.WordCloudData) {
	wc := charts.NewWordCloud()
	wc.SetGlobalOptions(charts.WithTitleOpts(opts.Title{Title: title}))
	wc.AddSeries(title, data).
		SetSeriesOptions(
			charts.WithWorldCloudChartOpts(
				opts.WordCloudChart{
					SizeRange: []float32{40, 80},
					Shape:     "cardioid",
				}),
		)
	f, _ := os.Create(fmt.Sprintf("wordcloud_%s.html", title))
	_ = wc.Render(f)
}

生成的词云如下
在这里插入图片描述
价格分布如下
在这里插入图片描述

小结

可以看到,标题中流程图词汇占比最高,价格中五块钱的模版占比最高,其次是3块钱的,再其次是免费的。
TDSQL-C Serverless使用体验上还不错,比较丝滑,感觉和远程数据库差不多,它动态扩缩容能力也能让我们少操点心

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

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

相关文章

阿里云故障洞察提效 50%,全栈可观测建设有哪些技术要点?

本文根据作者在「TakinTalks 稳定性社区 」公开分享整理而成 #一分钟精华速览# 全栈可观测是一种更全面、更综合和更深入的观测能力,能协助全面了解和监测系统的各个层面和组件,它不仅仅是一个技术上的概念,更多地是技术与业务的结合。在“…

Oracle外部表ORACLE_LOADER方式加载数据

当数据源为文本或其它csv文件时,oracle可通过使用外部表加载数据方式,不需要导入可直接查询文件内的数据。 1、如下有一个文件名为:test1.txt 的数据文件。数据文件内容为: 2、使用sys授权hr用户可读写 DATA_PUMP_DIR 目录权限&a…

Python tkinter Notebook标签添加关闭按钮元素,及左侧添加存储状态提示图标案例,类似Notepad++页面

效果图展示 粉色框是当前页面,橙色框是鼠标经过,红色框是按下按钮,灰色按钮是其他页面的效果; 存储标识可以用来识别页面是否存储:例如当前页面已经保存用蓝色,未保存用红色,其他页面已经保存用…

数据分析 | 调用Optuna库实现基于TPE的贝叶斯优化 | 以随机森林回归为例

1. Optuna库的优势 对比bayes_opt和hyperoptOptuna不仅可以衔接到PyTorch等深度学习框架上,还可以与sklearn-optimize结合使用,这也是我最喜欢的地方,Optuna因此特性可以被使用于各种各样的优化场景。 2. 导入必要的库及加载数据 用的是sklea…

idea插件开发-自定义语言01Language和LanguageType

Intellij platform本质是对不同的开发语言提供支持,举例来说我们也可以用notebook.app来开发java代码,但效率上可能没有可比性。因为Intellij idea提供了很多语言特定功能(例如语法高亮显示和代码分析)。很多插件本质上都是效率插…

AI项目二:基于mediapipe的虚拟鼠标控制

若该文为原创文章,转载请注明原文出处。 一、项目介绍 由于博主太懒,mediapipe如何实现鼠标控制的原理直接忽略,最初的想法是想控制摄像头识别手指控制鼠标,达到播放电影的效果。基本上效果也是可以的。简单的说是使用mediapipe检…

【软件测试】随笔系统测试报告

博主简介:想进大厂的打工人博主主页:xyk:所属专栏: 软件测试 随笔系统采用 SSM 框架前后端分离的方法实现,本文主要针对功能:登录,注册,注销,写随笔,删除随笔,随笔详情页…

SQLite数据库实现数据增删改查

当前文章介绍的设计的主要功能是利用 SQLite 数据库实现宠物投喂器上传数据的存储,并且支持数据的增删改查操作。其中,宠物投喂器上传的数据包括投喂间隔时间、水温、剩余重量等参数。 实现功能: 创建 SQLite 数据库表,用于存储宠…

【KD】2023 ICML Linkless Link Prediction via Relational Distillation

1、简介 图神经网络(GNN)有很强的链接预测能力,但是其计算依赖于对邻居节点知识的聚合,因此导致其在实际应用中往往有较高的延迟。与GNN不同,多层感知机(MLP)在预测时不依赖于邻居节点信息,因此其推理速度更快,但也在一定程度上影响了其预测准确性。为了同时利用这两…

Linux下如何修改CPU 电源工作模式

最近处理一起历史遗留问题,感觉很爽。 现象: 背景:设备采用ARM,即rk3568处理器,采用Linux系统;主要用于视觉后端处理 现象:当软件运行一段时间,大概1个小时(也不是很固定…

安卓开发问题记录:app:checkDebugDuplicateClasses

开发过程中报错: Duplicate class android.support.v4.app.INotificationSideChannel found in modules core-1.7.0-runtime (androidx.core:core:1.7.0) and support-v4-21.0.3-runtime (com.android.support:support-v4:21.0.3)按网上找到的说法:新引…

Java学习路线大全推荐来啦!

Java作为目前最热门使用最广泛的编程语言之一,许多人都想学习它。但Java学习书籍那么多,如何选择适合自己的呢?在这里,小编将为大家推荐两本Java学习书籍。 1.动力节点Java 《Java从零基础到精通》是一本Java实用教材,由动力节点…

Maven(四)常用命令大全

目录 一、mvn 命令参数二、mvn 插件命令1.介绍2.查看插件的使用文档3.常用的插件命令 官网地址: https://maven.apache.org/官方插件清单: https://maven.apache.org/plugins/index.html Maven 是一个强大的构建工具,它提供了许多命令来进行项…

EasyV用户必须了解的实操方法论|模板复用五步法

本文根据元宝 在模板复用训练课程上的分享整理而成。 从我们模板复用课程上线到现在,每一期我们都在反复强调:**如何让「所有的」EasyV用户都能搭建制作出「可以落地交付」的可视化大屏是我们课程制作的初衷,跳出「大屏搭建 大屏设计」的思维…

【机器视觉系统】NoobVision

NoobVision 基于Qt/C实现的视觉框架平台,已有多款项目成功实施 功能不算非常完善,但架构设计成熟 Q 2903612753

Spring事务的隔离级别介绍说明以及怎么去修改Spring事务的隔离级别

😀前言 本篇是Spring 声明式事务系列的最后一篇介绍了Spring事务的隔离级别介绍说明 🏠个人主页:尘觉主页 🧑个人简介:大家好,我是尘觉,希望我的文章可以帮助到大家,您的满意是我的…

SystemVerilog中$timeformat的用法

在SystemVerilog中,输出信息显示时间时,经常会在输出信息格式中指定“%t”格式符,一般情况下“%t”输出的格式都是固定的,但是这样固定的输出显示的时间可能有时会让用户看起来感觉比较诧异,例如下面的示例。 【示例】…

【word密码】设置word只读模式

想要将word文档设置为只读模式,方法有很多,今天小奥超人介绍几个方法给大家。 方法一:文件属性 常见的、简单的设置方法,不用打开word文件,只需要右键选择文件,打开文件属性,勾选上【只读】选…

ROSE75 GAS DM蓝牙5.2双模热插拔PCB

键盘使用说明索引(均为出厂默认值) 软件支持(驱动的详细使用帮助)一些常见问题解答(FAQ)首次使用步骤蓝牙配对规则(重要)蓝牙和USB切换键盘默认层默认触发层0的FN键配置的功能默认功…

助力金融服务行业转型,NETCLOUD的全方位解决方案!

随着科技的飞速发展和数字化时代的到来,金融行业也面临着前所未有的变革和挑战。在这个信息爆炸的时代,数字化转型已经成为金融行业不可忽视的趋势。从传统的银行、保险到投资管理,无一不受到数字化浪潮的影响。那么,为什么金融行…