5分钟

任务 4 使用COS保存词云图并生成分享链接

任务目的

这一步的目标是将词云图保存到COS存储桶中,这里需要用到cos-python-sdk-v5模块实现文件的上传功能,完成图片上传后,会生成一个分享链接,通过此链接可以在浏览器中访问生成的词云图。

任务步骤

1.存储桶创建及配置信息获取

关于创建存储桶和配置信息获取的详细步骤,可以参考腾讯云大学课程 使用Python生成个性二维码 中的 任务4 COS存储桶的创建和相关参数获取

本实验中主要需要用到的存储桶相关参数如下:

参数

说明

bucket_name,region

存储桶名称和所在地域,用于获取存储桶对象

secret_id,secret_key

云API密钥,操作存储桶的必需参数

注意:此处存储桶的访问权限,请设置为公有读私有写,否则无法进行图片分发的操作。

2.创建上传词云图文件upload_to_cos.py

(1)创建文件。

在项目目录中执行下方命令,创建获取新闻数据的upload_to_cos.py文件:

vim upload_to_cos.py

(2)粘贴实验代码。

按下I键进入编辑模式,复制下方的代码,粘贴到文件中:

from qcloud_cos import CosConfig
from qcloud_cos import CosS3Client

bucket_name = "<你的bucket_name>"
region = "<你的region>"
secret_id = "<你的secret_id>"    # 用户的 SecretId,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参考https://cloud.tencent.com/document/product/598/37140
secret_key = "<你的secret_key>"  # 用户的 SecretKey,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参考https://cloud.tencent.com/document/product/598/37140

def upload_to_cos(file_name, bucket_name=bucket_name, region=region, secret_id=secret_id, secret_key=secret_key):
                                                                     # 用户的 SecretId,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参考https://cloud.tencent.com/document/product/598/37140
                                                                     # 用户的 SecretKey,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参考https://cloud.tencent.com/document/product/598/37140
    """上传图片到COS存储桶"""
    # 设置用户配置
    config = CosConfig(Region=region, SecretId=secret_id, SecretKey=secret_key)  # 用户的 SecretId,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参考https://cloud.tencent.com/document/product/598/37140
                                                                                 # 用户的 SecretKey,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参考https://cloud.tencent.com/document/product/598/37140
    # 获取客户端对象
    client = CosS3Client(config)
    print("上传词云图至COS存储桶...")
    with open(file_name, "rb") as fp:
        response = client.put_object(
            Bucket=bucket_name,
            Body=fp,
            Key=file_name,
            StorageClass='STANDARD',
            EnableMD5=False
        )
        print("上传成功!COS图片链接为: https://{}.cos.{}.myqcloud.com/{}".format(bucket_name, region, file_name))

(3)替换配置参数。

完成实验代码的粘贴后,通过光标定位到代码上方配置参数这一部分:

bucket_name = "<你的bucket_name>"
region = "<你的region>"
secret_id = "<你的secret_id>"    # 用户的 SecretId,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参考https://cloud.tencent.com/document/product/598/37140
secret_key = "<你的secret_key>"  # 用户的 SecretKey,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参考https://cloud.tencent.com/document/product/598/37140

此处需要将代码中右侧的部分,替换为学员自己的存储桶信息和云API密钥信息。

完成参数的配置后,按下 ESC键切换到命令模式,并在英文模式下使用命令:wq保存文件并退出编辑器。

接下来将会对此模块中函数upload_to_cos的具体功能进行介绍说明。

3.upload_to_cos函数代码解析

接下来将会对此函数的具体功能进行介绍

注意:下方的代码介绍与上方粘贴的代码相同,主要是为了帮助学员理解代码功能,不需学员进行操作

(1)获取客户端对象。

函数中的前两行代码,主要是用于获取客户端对象:

config = CosConfig(Region=region, SecretId=secret_id, SecretKey=secret_key)  # 用户的 SecretId,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参考https://cloud.tencent.com/document/product/598/37140
                                                                             # 用户的 SecretKey,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参考https://cloud.tencent.com/document/product/598/37140
client = CosS3Client(config)

这一步的操作实际上是进行了客户端的初始化操作,通过创建客户端对象,便于接下来对COS存储桶进行操作。

注:更多信息可以参考腾讯云对象存储官方文档: PythonSDK-快速入门-初始化

(2)上传词云图至存储桶。

对于已经存储到本地的文件,可以通过文件流简单上传到COS存储桶:

with open(file_name, "rb") as fp:
    response = client.put_object(
        Bucket=bucket_name,
        Body=fp,
        Key=file_name,
        StorageClass='STANDARD',
        EnableMD5=False
    )

此处的参数file_name对应要上传的文件路径,此处使用的是已经在本地生成的词云图文件。

注:官方提供了多种上传对象的方式,详情可以访问官方文档:PythonSDK-快速入门-上传对象

上传成功后,将词云图片的访问链接打印在控制台上:

print("上传成功!COS图片链接为: https://{}.cos.{}.myqcloud.com/{}".format(bucket_name, region, file_name))

拼接出的访问链接,即为上传的词云图访问链接。