Category: 技术折腾

服务器、网络、硬件与自建工具的实践记录。

  • 如何使用Python批量下载微信公众号文章

    如何使用Python批量下载微信公众号文章

    在日常生活中,我们经常浏览微信公众号上的文章,但是有时候我们希望将这些文章保存到本地,以便日后查阅。本教程将教你如何使用Python编写一个脚本,批量下载微信公众号上的文章。

    开头小故事

    想象一下,你最喜欢的微信公众号发布了一篇精彩的文章,但你又怕以后找不到它。曾经有一天,我也遇到了这个问题。我决定动手编写一个Python脚本,可以批量下载我最喜欢的公众号文章,从此不再错过任何精彩内容。今天,我将与你分享这个方法。

    步骤 1: 准备工作

    首先,你需要确保你的电脑上已经安装了Python。如果还没有安装,你可以从 Python官网 下载并安装它。

    步骤 2: 安装必要的库

    在开始之前,你需要安装一些Python库,以便在脚本中使用。打开你的终端或命令提示符,并运行以下命令来安装这些库:

    pip install requests

    步骤 3: 编写Python脚本

    现在,让我们来编写Python脚本来批量下载微信公众号文章。你可以使用以下代码作为起点:

    import requests
    import html
    import time
    import os
    from random import randint
    
    def down(begin, count):
        url = "YOUR_WECHAT_PUBLIC_ACCOUNT_URL_HERE"  # 将此处替换为你要下载的公众号的URL
        headers = {"User-Agent": "YOUR_USER_AGENT_HERE"}  # 将此处替换为你的User-Agent
        encoding = "utf-8"
        fname = "articles.csv"  # 将下载的文章信息保存到一个CSV文件中
    
        url2 = url.replace('#wechat_redirect', '')
        url_home = f'{url2}&begin={begin}&count={count}&action=appmsg_list&f=json&r=0.26146868035616433&appmsg_token='
        res = requests.post(url_home, headers=headers, verify=False).json()
    
        for i in res['appmsg_list']:
            if html.unescape(i['link']) in urls:
                print('已经下载过文章:' + html.unescape(i['link']))
                continue
            data = requests.get(i['link'], headers=headers, verify=False)
            content = data.text.replace('data-src', 'src')
            try:
                date = time.strftime('%Y-%m-%d', time.localtime(int(i['sendtime'])))
                title = i['title']
                print('正在下载文章:', title, i['link'])
                with open(date + '_' + trimName(title) + '.html', 'w', encoding='utf-8') as f:
                    f.write(content)
            except Exception as e:
                with open(str(randint(1, 10)) + '.html', 'w', encoding='utf-8') as f:
                    f.write(content)
                print('错误信息:', e)
            with open(fname, 'a+', encoding=encoding) as f2:
                f2.write(date + ',' + title + ',' + i['author'] + ',' + i['digest'] + ',' + html.unescape(i['link']) + ',' + i['cover'] + '\n')

    请注意以下几点:

    • 你需要将 YOUR_WECHAT_PUBLIC_ACCOUNT_URL_HERE 替换为你要下载的微信公众号的URL。
    • 你需要将 YOUR_USER_AGENT_HERE 替换为你的User-Agent。你可以使用浏览器开发者工具来获取User-Agent。
    • 这个脚本会将文章保存为HTML文件,并将文章信息保存到一个CSV文件中。

    步骤 4: 运行脚本

    在你已经完成了脚本的编写后,保存它并在终端或命令提示符中运行它。根据你的需要,你可以调整 begin 和 count 参数来指定要下载的文章范围。

    down(0, 10)  # 下载前10篇文章,可以根据需要调整数量

    结论

    现在你已经学会了如何使用Python编写一个脚本,批量下载微信公众号文章。你可以根据自己的需求进一步定制这个脚本,以满足特定的下载需求。

    希望本教程对你有所帮助,让你不再错过任何精彩的微信公众号文章!

  • 如何使用Python和PyQt5创建双色球彩票选号器

    如何使用Python和PyQt5创建双色球彩票选号器

    你是否曾经在购买双色球彩票时感到犹豫不决,不知道应该选择哪些数字?如果是这样,那么你来对地方了!本教程将教你如何使用Python和PyQt5库创建一个简单的双色球彩票选号器。通过这个应用程序,你可以随机生成红球和蓝球的号码,为你的下一次购彩提供一些有趣的灵感。

    准备工作

    在开始之前,确保你已经安装了Python和PyQt5库。如果没有安装,可以使用以下命令安装:

    pip install PyQt5

    接下来,你需要准备一些图片素材,包括窗口背景图、开始按钮图和停止按钮图。确保这些图片素材与你的应用程序一起放置在一个文件夹中。

    创建窗口

    首先,我们将创建一个窗口,用于显示双色球的号码。以下是创建窗口的代码:

    from PyQt5 import QtCore, QtGui, QtWidgets
    from PyQt5.QtCore import QTimer
    import random
    
    class Ui_MainWindow(object):
        def setupUi(self, MainWindow):
            MainWindow.setObjectName("MainWindow")
            MainWindow.resize(435, 294)
            MainWindow.setWindowTitle("双色球彩票选号器")  # 设置窗口标题
            # 设置窗口背景图片
            MainWindow.setStyleSheet("border-image: url(:/back/双色球彩票选号器.jpg);")
            self.centralwidget = QtWidgets.QWidget(MainWindow)
            self.centralwidget.setObjectName("centralwidget")
            # 创建第一个红球数字的标签
            self.label = QtWidgets.QLabel(self.centralwidget)
            self.label.setGeometry(QtCore.QRect(97, 178, 31, 31))
            # 设置标签的字体
            font = QtGui.QFont()  # 创建字体对象
            font.setPointSize(16)  # 设置字体大小
            font.setBold(True)  # 设置粗体
            font.setWeight(75)  # 设置
            self.label.setFont(font)  # 为标签设置字体
            # 设置标签的文字颜色
            self.label.setStyleSheet("color: rgb(255, 255, 255);")
            self.label.setObjectName("label")
            # 创建第二个红球数字的标签
            # ...(重复创建其他红球数字的标签,以及蓝球数字的标签)
            # 创建“开始”按钮
            self.pushButton = QtWidgets.QPushButton(self.centralwidget)
            self.pushButton.setGeometry(QtCore.QRect(310, 235, 51, 51))
            # 设置按钮的背景图片
            self.pushButton.setStyleSheet("border-image: url(:/back/开始.jpg);")
            self.pushButton.setText("")
            self.pushButton.setObjectName("pushButton")
            # 创建“停止”按钮
            # ...(创建停止按钮,设置背景图片)
            MainWindow.setCentralWidget(self.centralwidget)
            # 设置显示双色球数字的Label标签背景透明
            self.label.setAttribute(QtCore.Qt.WA_TranslucentBackground)
            # ...(设置其他Label标签的背景透明)
            # 初始化显示双色球数字的Label标签的默认文本
            self.label.setText("00")
            # ...(设置其他Label标签的默认文本)
            QtCore.QMetaObject.connectSlotsByName(MainWindow)
            # 为“开始”按钮绑定单击信号
            self.pushButton.clicked.connect(self.start)
            # 为“停止”按钮绑定单击信号
            # ...(绑定停止按钮的槽函数)
    
        # 定义槽函数,用来开始计时器
        def start(self):
            self.timer = QTimer(MainWindow)  # 创建计时器对象
            self.timer.start()  # 开始计时器
            self.timer.timeout.connect(self.num)  # 设置计时器要执行的槽函数
    
        # 定义槽函数,用来设置7个Label标签中的数字
        def num(self):
            self.list = list(range(1, 34))
            one = random.choice(self.list)
            self.label.setText("{0:02d}".format(one))  # 随机生成第一个红球数字
            self.list.remove(one)
            # ...(生成其他红球和蓝球数字)
    
        # 定义槽函数,用来停止计时器
        # ...(实现停止计时器的槽函数)
    
    # 主方法
    if __name__ == '__main__':
        import sys
        app = QtWidgets.QApplication(sys.argv)
        MainWindow = QtWidgets.QMainWindow()  # 创建窗体对象
        ui = Ui_MainWindow()  # 创建PyQt5设计的窗体对象
        ui.setupUi(MainWindow)  # 调用PyQt5窗体的方法对窗体对象进行初始化设置
        MainWindow.show()  # 显示窗体
        sys.exit(app.exec_())  # 程序关闭时退出进程

    创建窗口背景

    在上面的代码中,我们设置了窗口的背景图片。确保将背景图片文件命名为”双色球彩票选号器.jpg”,并将其与代码放在同一个文件夹中。你可以根据自己的喜好更改背景图片。

    创建红球和蓝球数字标签

    我们创建了7个标签,用于显示双色球的号码:6个红球和1个蓝球。每个标签都有自己的坐标、字体、字号和颜色设置。这些标签的文本初始值都设置为”00″。

    创建开始和停止按钮

    我们创建了两个按钮,一个用于开始生成号码,另一个用于停止生成号码。这两个按钮都有自己的背景图片。在代码中,我们为这两个按钮分别绑定了”start”和”stop”方法,用于控制计时器的启动和停止。

    开始和停止方法

    在”start”方法中,我们创建了一个计时器对象

    并启动它。计时器每次触发时,将调用”num”方法,生成随机的双色球号码。

    “num”方法从1到33的数字中随机选择一个数字,然后将其格式化为两位数并设置为相应的标签文本。生成红球号码后,我们将选择的数字从列表中移除,以确保不会重复生成相同的号码。最后,我们生成蓝球号码,范围在1到16之间。

    “stop”方法用于停止计时器,以便用户可以随时停止号码的生成。

    运行应用程序

    最后,在”main“部分,我们创建了应用程序的主窗口并显示它。用户可以点击”开始”按钮来启动号码生成,点击”停止”按钮来停止生成。

    结论

    通过这个简单的应用程序,你可以随机生成双色球彩票的号码,为购彩提供一些有趣的元素。你可以根据需要自定义界面和按钮的外观,使应用程序更具吸引力。

    希望这个教程对你有所帮助,让你更好地理解如何使用Python和PyQt5创建图形用户界面应用程序。

    感谢阅读本教程,祝你好运,希望你的下一次双色球购彩大获成功!

  • 如何在Docker中使用DDNS-Go实现自动域名解析

    如何在Docker中使用DDNS-Go实现自动域名解析

    小明是一位网络技术爱好者,他有一台位于家里的服务器,但由于家庭网络的IP地址是动态的,他经常面临远程访问服务器的问题。他需要一个解决方案,能够动态地将服务器的IP地址与一个域名关联起来,以便可以随时访问。最近,他发现了一个名为DDNS-Go的开源项目,这个项目可以帮助他实现自动的域名解析,而且可以在Docker容器中轻松运行。在这篇文章中,我们将介绍如何在Docker中使用DDNS-Go来解决类似的问题。

    DDNS-Go:自动域名解析的利器

    DDNS-Go是一个开源项目,它可以自动获取您的公网IPv4或IPv6地址,并将其解析到您选择的域名服务商,从而实现动态域名解析。这个工具特别适合那些需要在动态IP地址下保持远程访问的用户,例如家庭服务器管理员或远程工作人员。

    DDNS-Go的特性

    • 跨平台支持: DDNS-Go支持Mac、Windows、Linux等多种操作系统,而且可以在ARM和x86架构上运行,因此可以轻松地适应各种环境。

    • 多种域名服务商支持: DDNS-Go支持多家域名服务商,包括阿里云、腾讯云、Cloudflare、华为云、百度云、Porkbun、GoDaddy、Google Domain等,您可以选择适合自己的域名服务商。

    • 灵活的获取IP方式: 您可以选择不同的方式来获取IP地址,包括接口获取、网卡获取以及自定义命令获取。这使得DDNS-Go适用于各种网络配置。

    • 服务方式运行: DDNS-Go可以作为一个服务在后台运行,定期同步IP地址,无需手动干预。

    • 支持多个域名同时解析: 您可以配置多个域名,并将它们同时解析到不同的IP地址。

    • 安全可控: 在开启公网访问时,DDNS-Go提供了安全性配置建议,建议用户使用Nginx等反向代理软件启用HTTPS访问,以保护数据安全。

    • Webhook通知: DDNS-Go支持Webhook通知,您可以在域名更新成功或失败时收到通知,随时监控域名解析状态。

    • Callback扩展性: 对于不常见的DNS服务商,DDNS-Go提供了Callback回调功能,您可以自定义回调来支持更多的DNS服务商。

    在Docker中使用DDNS-Go

    现在,让我们来看看如何在Docker容器中运行DDNS-Go,以实现动态域名解析。以下是详细的步骤:

    步骤1:挂载主机目录并使用Docker Host模式

    首先,您需要在Docker中运行DDNS-Go,并挂载主机目录以便存储配置文件等数据。可以将/opt/ddns-go替换为您主机上的任何目录,这个目录将用于存储DDNS-Go的数据和配置文件。

    docker run -d --name ddns-go --restart=always --net=host -v /opt/ddns-go:/root jeessy/ddns-go

    在上面的命令中,我们使用了--net=host参数,这意味着Docker容器将与主机共享网络命名空间,从而可以轻松地访问主机的网络接口。这对于DDNS-Go来说很重要,因为它需要获取主机的公网IP地址。

    步骤2:在浏览器中配置DDNS-Go

    现在,您可以在浏览器中打开http://主机IP:9876,以访问DDNS-Go的Web界面。在界面中,您可以配置您的域名、选择域名服务商、设置获取IP地址的方式以及其他选项。

    DDNS-Go Web界面 DDNS-Go Web界面

    在界面中进行配置后,不要忘记点击保存设置以保存您的配置。

    步骤3:可选项 – 使用ghcr.io镜像

    如果您更喜欢使用ghcr.io的Docker镜像,您可以使用以下命令:

    docker run -d --name ddns-go --restart=always --net=host -v /opt/ddns-go:/root ghcr.io/jeessy2/ddns-go

    这个命令与之前的命令几乎相同,只是使用了不同的Docker镜像。

    步骤4:可选项 – 配置启动参数

    DDNS-Go还支持在启动时带有参数,例如指定监听地址和同步间隔时间。以下是一个带有参数的示例命令:

    docker run -d --name ddns-go --restart=always --net=host -v /opt/ddns-go:/root jeessy/ddns-go -l :9877 -f 600

    在上面的命令中,我们指定了监听地址为:9877,同步间隔时间为600秒。

    步骤5:可选项 – 不使用Docker Host模式

    如果您不想使用Docker Host模式,也可以将端口映射到容器中,以便通过端口访问DDNS-Go。以下是一个示例

    命令:

    docker run -d --name ddns-go --restart=always -p 9876:9876 -v /opt/ddns-go:/root jeessy/ddns-go

    在上面的命令中,我们使用了-p参数将容器的9876端口映射到主机的9876端口,这意味着您可以通过http://主机IP:9876来访问DDNS-Go的Web界面。

    现在,您已经成功在Docker中运行了DDNS-Go,并且可以通过Web界面配置和管理它,以实现动态域名解析。

    结语

    DDNS-Go是一个功能强大且灵活的工具,它为用户提供了解决动态IP地址带来的网络限制问题的简单而有效的方式。无论您是想在家里远程管理设备,还是需要稳定的远程访问,DDNS-Go都可以帮助您实现目标。它的多种功能和灵活性使得它成为网络爱好者和技术专业人士的利器,让网络管理变得更加便捷和可控。

  • 项目介绍:DDNS-Go – 打破网络限制,实现自动域名解析

    项目介绍:DDNS-Go – 打破网络限制,实现自动域名解析

    小明是一位技术爱好者,最近他遇到了一个问题:他需要在家里远程管理一些网络设备,但是由于动态IP地址的限制,他无法稳定地远程访问这些设备。于是,他开始寻找解决方案,最终找到了一个名为”DDNS-Go”的项目,这个项目为他提供了一个简单而强大的工具,可以自动获取他的公网IPv4或IPv6地址,并将其解析到他的域名服务商,从而实现稳定的远程访问。

    DDNS-Go:打破网络限制的利器

    DDNS-Go - 打破网络限制,实现自动域名解析 DDNS-Go – 打破网络限制,实现自动域名解析

    DDNS-Go是一个自动化的域名解析工具,它能够帮助用户轻松地解决动态IP地址带来的远程访问问题。无论您是在使用Mac、Windows、还是Linux系统,无论您的设备是ARM架构还是x86架构,DDNS-Go都可以为您提供便捷的解决方案。

    功能强大,支持多种服务商

    DDNS-Go支持多家域名服务商,包括但不限于阿里云、腾讯云、Cloudflare、华为云、百度云、Porkbun、GoDaddy、Google Domain等。这意味着无论您使用哪家服务商的域名,都可以轻松地将您的动态IP地址与域名进行关联,实现远程访问。

    灵活配置,多种获取IP方式

    该项目支持多种获取IP地址的方式,包括接口获取、网卡获取以及自定义命令获取。这使得用户可以根据自己的网络环境和需求,选择最适合的方式来获取IP地址。不论您的网络配置如何,DDNS-Go都能够满足您的需求。

    稳定运行,自动同步

    DDNS-Go以服务的方式运行,可以在后台自动同步IP地址,无需用户手动干预。默认设置下,它会每隔5分钟同步一次IP地址,保证您的远程访问始终保持稳定。

    多域名支持,多级域名解析

    不仅如此,DDNS-Go还支持配置多个域名同时解析,甚至可以实现多级域名解析。这意味着您可以同时管理多个域名,并将它们关联到不同的设备或服务上。

    安全可控,支持Webhook通知

    在开启公网访问时,DDNS-Go提供了安全性配置建议,建议用户使用Nginx等反向代理软件启用HTTPS访问,以保护数据安全。此外,它还支持Webhook通知,您可以配置Webhook,以便在域名更新成功或失败时收到通知。这使得您可以随时监控域名解析状态,确保一切正常运行。

    扩展性强,支持Callback

    对于一些不常见的DNS服务商,DDNS-Go还提供了Callback回调功能,您可以自定义回调来支持更多的DNS服务商。这种灵活性使得DDNS-Go成为一个强大的扩展工具,满足了各种不同用户的需求。

    如何使用DDNS-Go

    DDNS-Go的使用非常简单,您可以按照以下步骤来配置和运行:

    1. 下载并解压DDNS-Go: 从 Releases 下载并解压DDNS-Go。

    2. 运行DDNS-Go: 双击运行解压后的可执行文件。如果没有找到配置文件,程序将自动打开一个Web界面,让您进行配置。

    3. 配置DDNS-Go: 在Web界面中,您可以配置您的域名、选择域名服务商、设置获取IP地址的方式等。配置完成后,保存设置。

    4. 启动服务(可选): 如果您希望DDNS-Go以服务的方式运行,您可以选择将其安装为系统服务。具体操作取决于您的操作系统,但通常是通过命令行执行一些命令来安装和启动服务。

    5. 监控和通知(可选): 配置Webhook通知,以便在域名更新时及时收到通知。您还可以配置Callback来支持更多的DNS服务商。

    6. 稳定远程访问: 现在,您可以通过您的域名来访问您的设备或服务,无论您的IP地址如何变化,都能够保持稳定的远程访问。

    开发与自行编译

    如果您是开发者或对自行编译感兴趣,DDNS-Go也提供了相应的支持。您可以使用提供的Makefile来构建自己的版本,也可以自行编译Docker镜像,以满足您的需求。

    结语

    DDNS-Go是一个强大的工具,它为用户提供了解决动态IP地址带来的网络限制问题的简单而有效的方式。无论您是想在家里远程管理设备,还是需要稳定的远程访问,DDNS-Go都可以帮助您实现目标。它的多种功能和灵活性使得它成为网络爱好者和技术专业人士的利器,让网络管理变得更加便捷和可控。

    如果您还在为动态IP地址带来的网络问题苦恼,不妨试试DDNS-Go,它可能会成为您网络生活的得力助手。

  • 使用腾讯云对象存储 COS API:轻松管理您的云数据

    使用腾讯云对象存储 COS API:轻松管理您的云数据

    在数字化时代,云存储成为了数据管理的核心,而腾讯云对象存储 COS 提供了便捷的API接口,让您可以直接通过HTTP/HTTPS请求与云后台进行数据交互。本文将为您详细介绍如何使用腾讯云对象存储 COS API,让您轻松管理您的云数据。

    开篇故事

    假设您是一名应用程序开发者,正在开发一个需要大规模存储和管理用户文件的应用。您意识到,为了确保高效的数据管理,您需要一个可靠的云存储解决方案。正当您在寻找最佳解决方案时,您听说了腾讯云对象存储 COS,这引起了您的兴趣。您决定深入了解如何使用COS API来满足您的数据管理需求。

    步骤一:注册腾讯云账号

    首先,如果您还没有腾讯云账号,您需要前往腾讯云注册页面进行账号注册。如果您已经拥有腾讯云账号,可以跳过这一步。

    步骤二:进入对象存储控制台

    登录腾讯云,并在控制台中找到”对象存储 COS”服务。点击进入该服务,您将进入对象存储 COS 控制台。

    步骤三:创建存储桶(Bucket)

    在使用COS之前,您需要创建一个存储桶(Bucket),用于存储您的数据。存储桶是COS中用于存储数据的容器。

    步骤四:获取API密钥

    在访问管理控制台的API密钥管理页面,您可以获取到APPID、SecretId和SecretKey。这些信息将用于身份认证和请求签名。

    步骤五:编写请求签名算法程序

    在使用COS API之前,您需要编写一个请求签名算法程序,用于生成请求的签名。签名是用来验证请求的身份和完整性的关键信息。

    步骤六:执行操作

    最后,您可以使用生成的签名,调用COS API执行您需要的操作,例如上传文件、下载文件、列出存储桶中的对象等等。

    COS API概览
    COS支持多种API接口,您可以根据具体需求选择合适的接口。详细的API接口列表可以在COS的官方文档中找到。

    术语信息
    在使用API接口时,您会遇到一些重要的概念和术语,下面是一些常用术语的描述:

    • APPID:开发者访问COS服务时拥有的用户维度唯一资源标识,用于标识资源。
    • SecretId:开发者拥有的项目身份识别ID,用于身份认证。
    • SecretKey:开发者拥有的项目身份密钥,用于生成签名。
    • Bucket:存储桶,COS中用于存储数据的容器。
    • Object:对象,COS中存储的具体文件,是存储的基本实体。
    • Region:地域信息,指定存储桶所在的地域。
    • ACL:访问控制列表,用于控制存储桶或对象的访问权限。
    • CORS:跨域资源共享,用于支持跨域访问。
    • Multipart Uploads:分块上传,用于大文件的上传。

    快速入门
    要使用腾讯云对象存储API,您需要先在腾讯云控制台开通COS服务,创建一个存储桶,获取APPID、SecretId和SecretKey,编写请求签名算法程序,并执行操作。这些步骤将帮助您开始高效地管理您的云数据。

    无论您是开发者还是企业管理员,腾讯云对象存储COS提供了强大的API接口,可帮助您轻松管理和存储大规模的数据。现在,您可以开始体验COS API的便捷和灵活性,确保您的数据得到安全、高效的管理。

    希望这篇教程对您有所帮助,让您可以充分利用腾讯云对象存储COS API来满足您的数据管理需求。

  • 如何在腾讯云创建文件系统及挂载点

    如何在腾讯云创建文件系统及挂载点

    在数字化时代,数据管理和存储对于企业和个人都至关重要。无论是为了备份重要文件还是为了提供共享资源,文件系统是一个不可或缺的组成部分。腾讯云为用户提供了创建文件系统及挂载点的便捷工具,本文将详细介绍如何在腾讯云上完成这一过程。

    开篇故事

    假设你是一名小型企业的IT管理员,负责管理公司的文件存储和共享。最近,公司的业务不断扩大,需要更有效地管理文件和数据。你听说腾讯云提供了可扩展的文件系统解决方案,并决定深入了解如何在腾讯云上创建文件系统及挂载点,以提高数据管理的效率和可靠性。

    步骤一:注册腾讯云账号

    首先,如果你还没有腾讯云账号,你需要注册一个。前往腾讯云的注册页面,完成账号注册。如果你已经有腾讯云账号,可以跳过这一步。

    步骤二:进入文件系统界面

    登录腾讯云,并在控制台中找到”文件存储”。在左侧导航栏中,单击”文件系统”,进入文件系统列表页面。

    步骤三:选择合适类型的文件系统

    在文件系统列表页面,你需要根据你的业务需求选择合适类型的文件系统。腾讯云提供不同性能和规格的文件系统,以满足不同的应用场景。你可以参考存储类型及性能规格来做出决策。

    步骤四:创建文件系统

    1. 单击”创建”按钮。

    2. 在弹出的创建文件系统窗口中,配置以下信息:

      • 文件系统名称:为你的文件系统指定一个自定义名称。
      • 地域:选择你希望创建文件系统的地域。
      • 可用区:选择所需的可用区。
      • 文件服务协议:选择文件系统的协议类型,可以是NFS或SMB。NFS适合Linux/Unix客户端,而SMB适合Windows客户端。
      • 权限组:每个文件系统必须绑定一个权限组,权限组规定了一组可来访白名单及读、写操作权限。
      • 网络:指定文件系统所在的VPC网络,该网络内的实例可挂载访问文件系统。
      • 存储量:仅对Turbo系列需要填写存储量,根据你的需求填写存储容量。
      • 云联网:仅对Turbo系列需要填写云联网信息,选择一个现有云联网或新创建一个。
      • 网段:仅对Turbo系列需要填写网段,确保所选网段不与其他云上实例的地址段冲突。
      • 标签:可以为文件系统添加标签,以便更好地管理和识别。
    3. 单击”下一步”。

    4. 最后,单击”立即创建”按钮,完成文件系统及挂载点的创建。

    步骤五:获取挂载点信息

    1. 当文件系统创建完成后,返回文件系统列表。
    2. 单击已创建的文件系统名称,进入文件系统基本信息界面。
    3. 在该页面下方,你可以找到挂载点信息,包括Linux和Windows下的挂载命令。建议复制这些命令以便后续的挂载操作。

    通过以上步骤,你已经成功创建了文件系统及挂载点,可以开始更高效地管理和共享你的数据了。

    无论是个人用户还是企业管理员,腾讯云提供了简单而强大的文件系统解决方案,帮助你轻松应对不断增长的数据需求。现在,你可以享受更高效的文件管理和数据共享体验。

    希望这篇教程对你有所帮助,让你能够更好地利用腾讯云的文件系统服务来管理你的数据。

  • 如何使用Python获取知乎热榜和推荐内容

    如何使用Python获取知乎热榜和推荐内容

    有没有想过如何获取知乎上的热门话题和推荐内容?知乎是一个汇聚了各种各样有趣问题和高质量回答的社交平台,获取其中的热门内容对于信息追踪和知识获取都非常有帮助。在这篇教程中,我们将使用Python来获取知乎的热榜和推荐内容,让你可以轻松掌握最新的热门话题和推荐问题。

    开篇故事

    假设你是一个热衷于知识和话题讨论的人,每天都希望了解最新的热门话题和推荐问题。而知乎正是一个让你满足这个需求的平台。但是,每天都手动打开知乎网站,查看热榜和推荐内容可能会很麻烦,特别是当你时间有限时。因此,你决定寻找一种更高效的方法,让计算机来帮你获取这些信息。

    这时,Python走进了你的视野。你了解到可以使用Python编写一个脚本,通过知乎的API来获取热榜和推荐内容。这听起来非常酷,不是吗?那么,让我们开始吧!

    步骤一:准备工作

    首先,我们需要导入Python的requests库,这将帮助我们发送HTTP请求以获取知乎的数据。你可以使用以下命令来安装这个库:

    pip install requests

    然后,我们将创建一个名为Zhihu的类,用于获取知乎的热榜和推荐内容。在类的构造函数中,我们定义了知乎的API链接、请求头和一些初始变量。

    import requests
    
    class Zhihu:
        """
        知乎热榜和推荐内容获取
        """
    
        def __init__(self):
            self.hot_lists_api = 'https://api.zhihu.com/topstory/hot-lists/total'  # 热榜API
            self.recommend_lists_api = 'https://api.zhihu.com/topstory/recommend'  # 推荐API
            self.headers = {
                'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36'
            }
            self.hot = self.get_hot_lists()  # 热榜未处理数据
            self.recommend = self.get_recommend_lists()  # 推荐未处理数据
            self.hot_data = self.wash_hot_lists()  # 热榜处理后数据
            self.recommend_data = self.wash_recommend_lists()  # 推荐处理后数据

    在构造函数中,我们还调用了四个方法来获取和处理热榜和推荐内容的数据。这些方法将在接下来的步骤中逐一实现。

    步骤二:获取知乎热榜数据

    第一个方法get_hot_lists用于获取知乎的热榜数据。我们将向知乎的热榜API发送HTTP请求,并将响应内容以JSON格式返回。

    def get_hot_lists(self):
        """
        获取知乎热榜
        :return: JSON数据
        """
        params = {'limit': '10',
                  'is_browser_model': '0'}
        response = requests.get(url=self.hot_lists_api, headers=self.headers, params=params)
        return response.json()

    在这个方法中,我们指定了一些参数,比如limit表示获取前10条热榜数据,is_browser_model表示不使用浏览器模式。然后,我们发送GET请求并返回JSON响应。

    步骤三:获取知乎推荐数据

    第二个方法get_recommend_lists用于获取知乎的推荐数据。与热榜数据不同,推荐数据需要一些额外的参数,如action、ad_interval、after_id和page_number。我们同样向知乎的推荐API发送HTTP请求,并将响应内容以JSON格式返回。

    def get_recommend_lists(self):
        """
        获取知乎推荐内容
        :return: JSON数据
        """
        params = {
            "action": "down",
            "ad_interval": "-10",
            "after_id": '1',  # TODO: 需要根据实际情况设置
            "page_number": '1',  # TODO: 需要根据实际情况设置
            "session_token": "99872c210b53364be1ede4bf459e8005", }
        response = requests.get(url=self.recommend_lists_api, headers=self.headers, params=params)
        return response.json()

    在这个方法中,我们需要注意设置after_id和page_number参数,这两个参数需要根据实际情况进行设置,以获取正确的推荐内容。

    步骤四:处理热榜数据

    第三个方法wash_hot_lists用于清洗热榜数据,将其处理成易读的格式。知乎的热榜数据包含了许多信息,但我们只关心标题和URL。所以,在这个方法中,我们遍历原始数据,提取出标题和URL,并将它们格式化成[title](url)的形式。

    def wash_hot_lists(self):
        """
        清洗热榜数据
        :return: ['[title](url)', ....]
        """
        hot_lists = []
        for data in self.hot['data']:
            title = data['target']['title']
            url = data['target']['url'].
    
    replace('api.zhihu.com/questions', 'zhihu.com/question')
            hot_lists.append(f'[{title}]({url})')
        return hot_lists

    这个方法将处理后的数据存储在hot_data属性中,以供后续使用。

    步骤五:处理推荐数据

    第四个方法wash_recommend_lists用于清洗推荐数据,同样将其处理成易读的格式。知乎的推荐数据可能包含问题和文章两种类型,所以我们需要根据数据的不同类型来提取标题和URL。

    def wash_recommend_lists(self):
        """
        清洗推荐数据
        :return: ['[title](url)', ....]
        """
        recommend_lists = []
        for data in self.recommend['data']:
            try:
                title = data['target']['question']['title']
                url = data['target']['question']['url'].replace('api.zhihu.com/questions', 'zhihu.com/question')
            except KeyError:
                title = data['target']['title']
                url = data['target']['url'].replace('api.zhihu.com/questions', 'zhihu.com/question')
            recommend_lists.append(f'[{title}]({url})')
        return recommend_lists

    这个方法将处理后的数据存储在recommend_data属性中,以供后续使用。

    步骤六:使用示例

    在类的构造函数中,我们已经调用了上述四个方法,获取和处理了热榜和推荐内容的数据。现在,你可以创建一个Zhihu类的实例,并使用其中的hot_data和recommend_data属性来访问处理后的数据。

    zhihu = Zhihu()
    print("知乎热榜:")
    for item in zhihu.hot_data:
        print(item)
    
    print("知乎推荐:")
    for item in zhihu.recommend_data:
        print(item)

    以上就是如何使用Python获取知乎热榜和推荐内容的方法。通过这个教程,你可以轻松地获取最新的热门话题和推荐问题,而不必手动浏览网站。这个方法还可以用于自动化信息追踪和数据分析等应用。

  • 如何使用Python批量下载网站图片

    如何使用Python批量下载网站图片

    在数字时代,图片是信息传递和分享的重要方式之一。如果你经常需要从网站上下载大量图片,那么手动下载将会是一项繁琐的任务。但是,不用担心!本教程将向你展示如何使用Python编写一个脚本来批量下载网站上的图片,让这项任务变得轻松而高效。

    开篇故事

    假设你是一名摄影爱好者,热衷于收集各种美丽的图片。你听说有一个网站,上面有数以千计的精美图片等待着你去探索。然而,手动一个一个下载这些图片将耗费你大量的时间和精力,于是你决定寻找一种更聪明的方式。

    这时,Python走进了你的视野。你得知可以使用Python编写一个脚本,让它自动帮你下载这些图片。这听起来很酷,不是吗?那么,让我们开始吧!

    步骤一:准备工作

    首先,我们需要安装几个Python库,以便在脚本中使用它们。这些库包括requests、lxml和concurrent.futures。你可以使用以下命令来安装它们:

    pip install requests lxml

    这些库将帮助我们进行网页请求、解析HTML以及并发下载图片。

    步骤二:编写下载图片的函数

    接下来,我们将编写一个函数,用于从指定的URL下载图片并保存到本地。这个函数将接受两个参数:图片的URL和保存路径。以下是这个函数的代码:

    import requests
    import os
    
    def download_image(url, img_path):
        headers = {
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}
        response = requests.get(url, headers=headers)
        img_name = url.split('/')[-1]
        with open(os.path.join(img_path, img_name), 'wb') as f:
            f.write(response.content)
            print(f'图片:{img_path}' + '/' + f'{img_name}下载完成!')

    这个函数首先发送HTTP请求以获取图片的内容,然后将内容保存到本地文件。在保存文件时,我们使用了图片的URL中的文件名作为文件名。

    步骤三:编写处理网页的函数

    现在,我们需要编写一个函数来处理网页,提取出图片的URL,并调用上面的download_image函数来下载图片。以下是这个函数的代码:

    from lxml import etree
    
    def process_page(page):
        url = f'https://www.****.****/page/{page}'
        headers = {
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}
        response = requests.get(url, headers=headers)
        html = etree.HTML(response.content)
        img_urls = html.xpath('//div[@class="excerpts"]/article/a/@href')
    
        for img_url in img_urls:
            response = requests.get(img_url, headers=headers)
            html = etree.HTML(response.content)
            img_elements = html.xpath('//article/p/img')
            img_title = html.xpath('//title/text()')[0].split('-')[0]
            img_path = f'J:/xiezhen/{img_title}'
    
            if not os.path.exists(img_path):
                os.makedirs(img_path)
    
            for img_element in img_elements:
                img_url = img_element.attrib['src']
                download_image(img_url, img_path)
    
            time.sleep(0.5)

    这个函数首先访问指定页面的URL,然后使用XPath解析HTML,提取出文章页面的链接。接着,它遍历每个文章页面的链接,进一步提取出图片的URL和标题。然后,它创建一个以标题命名的文件夹,将图片保存在其中。

    步骤四:并发下载

    为了提高下载速度,我们可以使用Python的concurrent.futures模块来实现并发下载。以下是如何使用该模块的代码:

    import concurrent.futures
    
    if __name__ == '__main__':
        with concurrent.futures.ThreadPoolExecutor() as executor:
            futures = []
            for page in range(1, 573):
                futures.append(executor.submit(process_page, page))
            for future in concurrent.futures.as_completed(futures):
                pass

    这段代码会创建一个线程池,每个线程将处理一个页面的下载任务。我们遍历了从1到572的页面,并将每个页面的处理函数process_page提交给线程池。最后,我们等待所有任务完成。

    结语

    通过这个简单的Python脚本,你可以轻松实现批量下载网站图片的任务。不再需要手动一个一个下载,节省了大量时间和精力。这是Python的强大之处,它可以帮助你自动化各种任务,让生活更加便捷。

  • 解决JavaScript中的大数溢出问题

    解决JavaScript中的大数溢出问题

    在JavaScript开发中,经常会遇到处理大数的情况,特别是当后端返回的数据中包含大数时。这些大数在经过JSON.parse之后,很容易导致溢出问题,给开发带来了不少麻烦。在本文中,我们将深入探讨JavaScript中的大数溢出问题,并提供一些解决方案,帮助你更好地处理这一挑战。

    开篇故事:JavaScript中的大数溢出陷阱

    曾经有一位前端开发者,他在开发一个电商网站时遇到了一个奇怪的问题。后端API返回的数据中包含了订单金额,有时这个金额会很大,超过了JavaScript的Number类型所能表示的范围。当他尝试将这个金额通过JSON.parse解析后,发现金额不再是原来的数值,而是一个错误的值,导致订单金额计算出错,这给用户带来了不便。

    这位开发者陷入了疑惑,为什么在JSON.parse的过程中会出现这种问题?他开始研究大数溢出的原因,并寻找解决方案,以确保订单金额的准确性。

    JavaScript中的大数溢出问题

    在JavaScript中,Number类型的数值有其范围限制。具体来说,JavaScript中的Number类型使用64位双精度浮点数表示,这意味着它可以表示的整数范围大约在-2^53到2^53之间。当一个整数超过这个范围时,就会出现精度丢失,导致溢出。

    这个问题在处理后端返回的大数时尤为突出。后端通常会以整数的形式返回数据,但由于JavaScript的限制,一旦这些数据超出了Number类型的表示范围,就会出现问题。这导致了数据的不准确性和计算的错误。

    解决方案一:使用字符串表示大数

    一种常见的解决方案是在后端返回数据时,将大数转换为字符串表示。这样可以避免JavaScript中Number类型的限制,同时保留大数的精度。前端在接收到这些数据后,可以直接使用字符串,而不会发生溢出问题。

    例如,在后端返回数据时,将订单金额表示为字符串:

    {
      "orderId": "12345",
      "amount": "1000000000000000000"
    }

    前端接收到数据后,可以直接使用字符串进行计算或显示,而不需要将其转换为Number类型。

    这种方法的好处是简单直接,但在一些情况下可能需要手动将字符串转换为数值,例如进行加法或乘法运算。

    解决方案二:使用第三方库处理大数

    另一种解决方案是使用第三方库来处理大数。有一些JavaScript库,如json-bigint,专门用于处理JSON数据中的大数。这些库会自动将大数转换为BigInt类型,以避免溢出问题。

    使用json-bigint库非常简单,只需将其引入项目中,然后在解析JSON数据时使用它来替代原生的JSON.parse方法。这样可以确保大数不会丢失精度。

    以下是使用json-bigint库的示例代码:

    const JSONbig = require('json-bigint');
    
    const jsonData = '{"orderId": 12345, "amount": 1000000000000000000}';
    const parsedData = JSONbig.parse(jsonData);
    
    console.log(parsedData.amount.toString()); // 使用toString()方法将BigInt转换为字符串

    这种方法的好处是自动处理大数,无需手动转换,但需要引入额外的库。

    结语

    在JavaScript开发中,处理大数溢出问题可能是一个挑战,但我们有多种解决方案可供选择。你可以选择将大数表示为字符串,或者使用第三方库来处理大数,以确保数据的精度和准确性。

    无论你选择哪种方法,都应该根据项目的需求和复杂性来决定。重要的是要理解JavaScript中Number类型的限制,以避免大数溢出问题,保证数据的正确性。

  • Ubuntu 20.04 镜像安装与源更换指南

    Ubuntu 20.04 镜像安装与源更换指南

    故事发生在一位IT工程师的电脑前,他正在尝试安装Ubuntu 20.04操作系统,以准备进行一项重要的开发任务。然而,他的安装过程遇到了一个令人头疼的问题:下载速度太慢了!由于他所在的地区与Ubuntu官方源之间的网络连接问题,安装过程几乎停滞不前。

    面对这一问题,工程师决定寻找一种解决方案,以提高下载速度并顺利完成安装。他开始研究如何使用镜像安装Ubuntu 20.04,并如何更改软件源以获取更快的下载速度。这是他踏上了寻找速度的轨迹,也是本文的主题。

    步骤一:下载Ubuntu 20.04镜像

    在安装Ubuntu 20.04之前,首先需要下载相应的镜像文件。你可以访问Ubuntu官方网站(https://ubuntu.com/download) 来获取最新版本的Ubuntu 20.04镜像。选择适合你计算机架构的版本,通常是64位版本。

    下载完成后,你将得到一个以”.iso”为扩展名的镜像文件。你可以将这个文件刻录到光盘或制作成USB启动盘,以便进行安装。

    步骤二:安装Ubuntu 20.04

    一旦你准备好了安装媒体,就可以开始安装Ubuntu 20.04了。插入光盘或连接USB启动盘后,重启计算机,并确保从安装媒体启动。

    在安装过程中,你需要选择一些设置,如时区、键盘布局和磁盘分区。最重要的是,在选择软件源时,你可以选择使用默认的官方源,但如果你的下载速度较慢,你可以稍后更改它们。完成设置后,继续安装过程。

    步骤三:更改软件源

    安装完成后,你可以通过更改软件源来提高下载速度。默认情况下,Ubuntu使用官方源,但你可以选择一个距离你更近的镜像源。

    使用命令行更改软件源

    1. 打开终端。

    2. 编辑/etc/apt/sources.list文件,可以使用nano或vim等文本编辑器进行编辑。

      sudo nano /etc/apt/sources.list
    3. 在文件中,你将看到类似于以下行的内容:

      deb http://archive.ubuntu.com/ubuntu/ focal main restricted universe multiverse
      deb http://archive.ubuntu.com/ubuntu/ focal-updates main restricted universe multiverse
      deb http://archive.ubuntu.com/ubuntu/ focal-backports main restricted universe multiverse
      deb http://security.ubuntu.com/ubuntu/ focal-security main restricted universe multiverse
    4. 将这些行中的archive.ubuntu.com替换为一个你选择的镜像源。你可以在Ubuntu官方网站上找到镜像源的列表(https://launchpad.net/ubuntu/+archivemirrors)。

    5. 保存文件并退出编辑器。

    6. 更新软件包列表以应用更改。

      sudo apt-get update

    使用图形界面更改软件源

    1. 打开”软件和更新”应用程序。

    2. 切换到”Ubuntu软件”选项卡。

    3. 在”下载自”下拉菜单中选择一个镜像源。

    4. 关闭应用程序并保存更改。

    步骤四:更新系统

    无论你选择使用命令行还是图形界面更改软件源,都需要更新系统以使更改生效。使用以下命令来更新系统:

    sudo apt-get upgrade

    这将下载并安装所有可用的更新包,确保你的系统是最新的。

    步骤五:享受更快的下载速度

    现在,你的Ubuntu 20.04系统已经成功安装,并且你已经更改了软件源以提高下载速度。你可以使用apt-get或其他包管理器来安装软件包,它们将从你选择的镜像源中获取软件包,速度更快。

    结语

    本文介绍

    了如何下载、安装Ubuntu 20.04,并更改软件源以提高下载速度。无论你是在新计算机上安装Ubuntu,还是想要更改现有系统的软件源,这些步骤都将帮助你轻松完成任务。

    希望这篇教程对你有所帮助,让你的Ubuntu使用体验更加流畅,下载速度更快!