易语言实现从IE获取网页信息的编程示例

本文还有配套的精品资源,点击获取 menu-r.4af5f7ec.gif

简介:易语言是一种简体中文编程语言,降低了编程门槛,便于非专业背景人员学习。本实例介绍如何使用易语言获取Internet Explorer(IE)浏览器中的网页信息。关键知识点包括网络通信、HTML解析、事件驱动编程、错误处理、界面设计和代码组织。此项目适合技术学习、毕业设计或小团队项目,有助于理解易语言网络编程及与IE浏览器的交互。 易语言取IE网页信息源码.zip易语言项目例子源码下载

1. 易语言编程入门

易语言是一种面向中文用户的编程语言,因其简洁易学而受到许多初学者和专业开发者的青睐。在本章中,我们将介绍易语言的基本概念、开发环境的搭建、基础语法以及程序流程控制,旨在帮助新手快速进入编程世界的大门。

1.1 易语言简介与开发环境搭建

易语言由吴涛先生创建,主要特点是大量使用中文关键字,使得中文使用者能够更加容易地编写程序。易语言的开发环境(EPL)提供了一套集成开发工具,包括代码编辑器、编译器、调试器等。

  • 开发环境搭建步骤:
  • 访问易语言官方网站下载EPL安装程序。
  • 运行安装程序,按指引完成安装。
  • 启动EPL,创建一个新的易语言项目。

在安装EPL时,请确保所有预装的依赖项(如.NET Framework)也被正确安装。这一步骤对于后续的开发工作至关重要。

1.2 基础语法与数据类型

易语言的基本语法结构与传统编程语言类似,但关键字使用中文,更适合中文用户学习和使用。易语言支持丰富的数据类型,包括基本类型如整数、浮点数、字符和字符串,以及复合类型如数组、对象等。

  • 基础语法举例: ```易语言 .版本 2 .程序集 程序集1 .程序集引用 kernel32.dll

.子程序 输出文本, 公开, 文本型, 参数 文本 输出(文本) .子程序结束 ```

本章节将引导读者通过实例来理解易语言的基本语法和数据类型使用。通过编写简单的程序,读者将逐渐熟悉易语言的开发流程。

2. 网络通信实现

2.1 网络编程基础

2.1.1 网络通信的协议概述

网络通信是现代计算机科学的重要组成部分,它涉及到各种协议来确保数据在设备之间准确无误地传输。在互联网中,TCP/IP协议族是最为核心和广泛使用的。TCP/IP(传输控制协议/互联网协议)是用于互联网和私有网络通信的一组规则,由两个主要协议组成:TCP协议负责数据传输的可靠性,IP协议负责数据包的寻址和路由。

除了TCP/IP,HTTP(超文本传输协议)是用于从Web服务器传输超文本到本地浏览器的协议。它基于TCP/IP协议,并使用端口80或443进行通信。HTTPS(HTTP安全)是HTTP的安全版本,它在HTTP和TCP/IP之间增加了一个SSL/TLS安全层。

2.1.2 易语言中的网络通信组件

易语言提供了丰富的网络通信组件来简化网络编程过程。开发者可以使用这些组件快速构建网络应用,进行数据的发送与接收。

易语言中的“网络通信控件”允许开发者通过设置控件属性来建立TCP/UDP连接,发送和接收数据。使用“HTTP通信控件”,开发者可以发送HTTP请求,并处理响应数据,这些控件支持GET、POST等HTTP请求方法。对于需要加密通信的应用场景,易语言提供了SSL/TLS封装的网络控件,可以在应用层实现数据加密,确保数据在传输过程中的安全。

2.2 网页信息抓取的原理

2.2.1 HTTP/HTTPS协议与请求响应

网页信息抓取通常涉及到发送HTTP请求到目标服务器,并接收服务器返回的响应。HTTP请求包含请求行、请求头、空行和请求体四个部分。请求行指定了HTTP方法、请求资源的URI和使用的HTTP版本。请求头包含了关于客户端请求的额外信息,如用户代理、接受的内容类型等。空行用于分隔请求头和请求体。请求体则用于发送数据,如在POST请求中发送表单数据。

服务器响应也遵循类似的结构,包括状态行、响应头、空行和响应体。状态行包含了HTTP版本、状态码和状态码的文本描述,如“200 OK”表示请求成功。响应头包含了服务器处理请求后的各种元数据,例如内容类型、内容长度等。响应体则包含了实际的资源数据,如HTML文档、图片等。

2.2.2 易语言中的网页信息抓取方法

易语言为开发者提供了简单的接口来实现网页信息的抓取。开发者可以使用“HTTP通信控件”中的Get方法或Post方法发送HTTP请求到指定的URL,并获取服务器返回的响应数据。

下面是一个简单的易语言代码示例,展示了如何使用HTTP通信控件发起GET请求:

.版本 2
.程序集 网页信息抓取示例
.子程序 下载完毕, 整数型, 公开
.局部变量 网络通信控件1, 网络通信控件
.局部变量 返回内容, 字节集
.局部变量 URL地址, 文本型
URL地址 = “http://example.com”
网络通信控件1.创建(0)
网络通信控件1.绑定到本程序集
网络通信控件1.网址 = URL地址
网络通信控件1.执行_get
等待网络通信控件1.下载完毕
返回内容 = 网络通信控件1.内容
输出(返回内容)
网络通信控件1.销毁

在此示例中,我们创建了一个网络通信控件,并设置其网址属性为目标URL地址。随后,执行_get方法来发送GET请求,并通过监听下载完毕事件来获取服务器的响应数据。

2.3 网络通信的高级应用

2.3.1 异步通信与多线程

在易语言中,网络通信通常采用异步方式进行,这样可以避免阻塞主线程,提高应用程序的响应性和效率。异步通信意味着网络操作不会立即返回结果,而是当操作完成时会通过事件通知应用程序。

易语言支持多线程编程,可以创建多个线程分别处理不同的任务,这在处理网络通信时非常有用。例如,可以在一个线程中处理网络请求,而在主线程中更新用户界面,这样可以避免因为网络请求延迟导致的用户界面冻结。

2.3.2 网络安全与加密技术

随着网络技术的发展,数据安全变得日益重要。易语言中的网络通信组件支持SSL/TLS加密,这可以保护数据传输过程中的隐私和完整性。在发送或接收敏感信息时,务必使用加密通信来防止数据被截获或篡改。

通过网络通信控件的“使用SSL加密”属性,开发者可以轻松地为通信添加SSL/TLS加密层。在易语言中,SSL加密通常用于HTTPS通信,通过建立安全的SSL会话来保护数据传输。

总结以上内容,网络通信实现是构建现代网络应用程序的基础。易语言通过封装网络通信的细节,让开发者能够更便捷地进行网络编程和信息抓取,同时也注重了高级应用中的异步通信、多线程处理和网络安全问题。在下一章节中,我们将进一步探索HTML内容解析方法,深入理解如何有效地处理和解析网页数据。

3. HTML内容解析方法

3.1 HTML解析概述

3.1.1 HTML文档结构与节点

在Web开发中,HTML文档被看作是一个结构化的树形模型,其中每个HTML元素都被视为树中的一个节点。节点可以进一步细分为元素节点、属性节点、文本节点等。易语言提供了内置的HTML解析库,使得开发者可以像操作DOM树一样对HTML文档进行分析和操作。

理解HTML文档的结构和节点是进行有效内容解析的前提。例如,考虑以下简单的HTML文档结构:

<html>
    <head>
        <title>My Web Page</title>
    </head>
    <body>
        <h1>Welcome to My Web Page</h1>
        <p>This is a paragraph.</p>
    </body>
</html>

在这个文档中, html 是根节点, head body 是它的两个子节点。 title , h1 , p 则分别是 head body 的子节点。每个节点代表了HTML文档的一个组成部分,包括标签、属性以及嵌套的内容。

3.1.2 易语言中的HTML解析工具

易语言提供了一些用于HTML内容解析的工具和函数,其中“HTML解析器”组件尤为突出。该组件支持正则表达式以及自定义的解析规则,使得开发者可以根据需要提取HTML文档中的特定信息。

下面是一个使用易语言HTML解析器组件提取页面中所有链接的示例代码:

.版本 2
.程序集 网页解析示例
.子程序 提取链接, 公开
.参数 网页内容, 文本型
.局部变量 解析器, HTML解析器
.局部变量 链接列表, 阵列
.局部变量 链接, 文本型

解析器 = 创建HTML解析器(网页内容)
如果 解析器.打开(HTML解析器.打开HTML文档) 则
    解析器.定位节点("a", 1)
    当 解析器.节点定位成功() 时
        链接 = 解析器.节点文本()
        链接列表.加入(链接)
        解析器.定位下一个节点("a")
    结束当
    解析器.关闭()
    输出(链接列表)
否则
    输出("解析失败")
结束如果

销毁 解析器
返回 真

在上面的代码中,我们创建了一个HTML解析器实例,并用它来打开HTML文档。通过定位到所有的 <a> 标签,并提取它们的文本内容(即超链接),我们将所有链接存储在了一个数组中,并最终输出。这展示了易语言中HTML解析的基本方法。

3.2 信息提取与数据处理

3.2.1 DOM树遍历与节点操作

DOM(文档对象模型)树提供了HTML文档的逻辑结构,通过遍历这棵树,可以访问文档中的任何节点。在易语言中,可以通过HTML解析器的API来实现对DOM树的操作,包括遍历节点、修改节点内容、添加或删除节点等。

以下是遍历DOM树的基本方法,它展示了如何访问所有文本节点并进行处理:

.版本 2
.程序集 网页解析示例
.子程序 打印文本节点, 公开
.参数 解析器, HTML解析器
.局部变量 遍历器, HTML节点遍历器
.局部变量 节点, HTML节点
.局部变量 文本内容, 文本型

遍历器 = 解析器.创建节点遍历器()
如果 遍历器.创建(解析器.获取根节点()) 则
    当 遍历器.获取下一个节点(节点) 时
        如果 节点.节点类型() = HTML节点.文本节点 则
            文本内容 = 节点.节点值()
            输出(文本内容)
        结束如果
    结束当
结束如果

销毁 遍历器

3.2.2 数据格式转换与输出

提取出来的数据通常需要进行格式化或转换以便于使用或展示。例如,提取出来的链接列表可能需要转换为URL对象,或者将HTML代码中的文本格式化为XML格式。易语言支持多种格式转换函数,包括XML和JSON的处理。

考虑上面提取链接的代码,我们可以添加格式化输出的部分,比如将每个链接转换为JSON格式:

.局部变量 链接JSON, 文本型

对于 链接 在 链接列表 中
    链接JSON += "{""url"":""" + 链接 + """},"
结束对于
链接JSON = 左截取(链接JSON, 字符串长度(链接JSON) - 1) ' 移除最后一个逗号
输出("[" + 链接JSON + "]") ' 输出最终的JSON数组

通过这种方式,我们不仅提取了页面的链接,还以JSON数组的形式进行了格式化输出,为前端展示或进一步的数据处理提供了方便。

在本章节中,我们详细探讨了HTML内容解析的基础知识、易语言中进行HTML解析的方法,以及如何提取和处理HTML文档中的数据。通过这些讨论和示例代码,相信读者已经对易语言中的HTML解析有了深入的理解,并可以在实际的项目中应用这些技巧。

4. 事件驱动编程模型

事件驱动编程是一种广泛应用于计算机编程中的编程范式,在该范式中,程序的流程由事件来决定,比如用户输入、系统消息等。这种方式非常适合于图形用户界面(GUI)的程序设计,以及网络应用开发。易语言作为一种支持事件驱动模型的编程语言,它极大地简化了事件处理的复杂性,使得开发者可以专注于业务逻辑的实现。

4.1 事件驱动的基本原理

4.1.1 事件与事件处理器

事件是程序运行过程中,由用户的操作、系统内部消息、其他程序的调用等因素触发的某个动作。事件处理器是一种特殊的函数或过程,当特定的事件发生时,它会被系统调用执行,以响应该事件。

以易语言为例,当用户点击一个按钮时,这个动作就会产生一个事件(例如 按下 事件),然后易语言的事件处理机制会调用与该事件关联的事件处理函数(即事件处理器),来执行相应的逻辑处理。

4.1.2 易语言中的事件驱动机制

易语言将事件驱动模型发挥到了极致。它将各种事件进行分类,并提供了一套丰富的事件处理方法。开发者可以通过简单的配置,在图形化的IDE中将控件事件与事件处理代码关联起来,从而实现复杂的逻辑。

例如,一个典型的窗口程序可能会有 创建窗口 鼠标点击 键盘输入 等多个事件,易语言通过在IDE中双击事件名,即可生成对应的事件处理模板代码,程序员只需在模板中添加具体的处理逻辑。

.版本 2
.程序集 程序集1
.子程序 _按钮1_按下, 整数型, 事件, 按钮1
    输出 "按钮被按下"
.子程序结束

上述代码展示了一个按钮的“按下”事件处理子程序,当按钮被按下时,程序会输出"按钮被按下"。

4.2 事件响应策略与实践

4.2.1 事件队列与异步处理

事件驱动编程中,事件队列是一种重要的机制。所有产生的事件被放入一个队列中,程序通过轮询或事件触发机制来处理队列中的事件。

易语言中事件处理遵循先入先出的原则,事件按照它们产生的顺序来进行处理,同时支持异步处理,即事件处理器在执行时不会阻塞其他事件的处理。

4.2.2 实际应用场景中的事件处理技巧

在实际的应用场景中,合理地处理事件非常重要。比如在处理耗时较长的任务时,应避免在事件处理器中直接执行,以免影响程序的响应性。

易语言通过多线程和异步任务机制,允许开发者将耗时操作放在后台线程执行,而主线程则继续监听和处理用户事件。这样一来,即使在执行复杂计算或网络通信时,用户界面也能保持流畅和响应。

4.3 事件驱动与性能优化

4.3.1 优化事件处理的策略

性能优化是事件驱动编程中的一个关键考量因素。合理设计事件处理器,减少不必要的计算和资源占用,避免在事件处理器中执行阻塞操作,这些都有助于提升程序性能。

易语言中,通过事件触发的异步处理,可以有效地避免界面因处理事件而卡顿,提升用户体验。

4.3.2 避免事件处理中的常见错误

在事件驱动编程中,一些常见的错误包括:

  • 循环引用:事件处理器中创建的对象和资源没有正确释放,导致内存泄漏。
  • 长时间运行的处理器:在事件处理器中执行耗时操作,导致界面无响应。

易语言通过事件逻辑的优化,比如将长时间运行的任务转移到线程中处理,并在资源使用完毕后及时释放,有效避免了上述常见错误。

.子程序 _窗口1_关闭, 整数型, 事件, 窗口1
    .局部变量 线程句柄, 整数型
    线程句柄 = 线程_创建(子程序地址(执行后台任务))
    线程_结束(线程句柄)
.子程序结束

以上代码示例展示了如何在易语言中通过事件触发来创建并结束线程,以便在后台执行任务,避免阻塞事件处理流程。

事件驱动编程模型是易语言的一大特色,使得开发复杂的应用程序变得更加高效和直观。通过理解事件驱动的基本原理、响应策略以及性能优化策略,开发者可以充分利用易语言提供的事件驱动机制,实现功能丰富、响应迅速的软件产品。

5. 异常处理机制

在软件开发中,异常处理是确保应用程序稳定运行的关键技术之一。它允许程序在遇到非预期情况时,能够以一种可控的方式进行处理,避免崩溃或产生不可预知的行为。易语言作为一门中文编程语言,也提供了完善的异常处理机制,帮助开发者捕捉和管理程序运行中可能出现的错误和异常情况。

5.1 异常处理的基本概念

异常处理是程序设计中的一大重要课题。在易语言中,通过一系列结构化的处理方式,可以确保程序在遇到错误时能够优雅地恢复或终止运行。

5.1.1 异常的分类与定义

异常通常可以分为三类:语法错误、运行时错误和逻辑错误。语法错误通常在编译阶段就会被发现,运行时错误包括除零错误、空指针异常等,而逻辑错误则是程序在运行时表面上并未中断,但输出结果与预期不符的情况。

易语言中的异常处理,主要关注的是运行时错误。通过在代码中预设的逻辑判断与异常捕获,可以有效地管理这些错误,从而保证程序的健壮性和稳定性。

5.1.2 易语言中的异常处理结构

易语言提供了标准的异常处理结构,即 try-catch-finally 语句。开发者在可能发生错误的代码块周围加上 try 结构,并在其中编写可能引发异常的代码。如果在 try 块中发生了异常,将会自动跳转到相应的 catch 块中进行处理。无论是否发生异常,finally 块中的代码都将被执行。

例如:

try
    ' 尝试执行可能引发异常的代码
catch 整数型型 变量名
    ' 处理异常,可以获取异常信息
finally
    ' 最终执行的代码块

在这段示例代码中,我们尝试执行一段可能导致异常的代码。如果发生了异常,会捕获异常信息到变量中,并在 catch 块中处理。无论如何,finally 块中的代码都将被执行。

5.2 异常捕获与处理策略

正确处理异常能够提高程序的可用性和稳定性。易语言中的异常处理提供了多种策略来应对不同的错误情况。

5.2.1 try-catch-finally的使用

try-catch-finally 结构是异常处理的基础。try 块用于包含可能会抛出异常的代码。如果 try 块内的代码抛出了异常,那么 catch 块会被执行,开发者可以在其中处理异常。

一个典型的异常处理示例如下:

try
    ' 可能抛出异常的代码
    调用函数
catch 异常类型 异常对象
    ' 处理异常
    信息框("捕获到异常:" + 转文本(异常对象.获取信息()))
finally
    ' 最终执行的代码,无论是否发生异常都会执行
    信息框("处理完毕")

5.2.2 自定义异常与错误日志记录

在易语言中,除了内置的异常类型之外,开发者还可以自定义异常类型。自定义异常通常用于特定的业务逻辑错误处理。通过定义异常类,可以添加更多的属性和方法,以符合特定的错误处理需求。

同时,为了跟踪和调试程序,在发生异常时,可以记录错误日志。错误日志记录是诊断问题和程序行为的关键,可以帮助开发者分析错误原因和发生的具体位置。

例如:

类 异常
    公开 属性 错误信息文本型
    公开 方法 异常(文本型)
        错误信息 = 参数
        调用父类构造器(参数)
    公开 方法 获取信息文本型
        返回 错误信息
类结束

' 使用自定义异常
try
    ' 可能抛出异常的代码
    抛出 新建(异常, "自定义异常信息")
catch 异常型 异常对象
    ' 处理自定义异常
    信息框(异常对象.获取信息())
finally
    ' 记录错误日志
    日志文件_写入文本("异常发生:" + 日期时间到文本(当前日期时间()))
类结束

在此示例中,我们定义了一个 异常 类,并在异常发生时记录日志。

5.3 异常管理的最佳实践

异常管理不仅涉及错误处理本身,还包括如何设计异常结构、记录和管理异常。良好的异常管理能够提升程序的健壮性,并使得代码更加清晰易于维护。

5.3.1 异常处理的设计原则

异常处理的设计原则包括:尽量捕获具体异常而非泛泛的异常类型、避免隐藏异常的真实原因、保持异常的干净不污染,以及合理的异常传递和处理策略。

异常处理时应注意不要使用异常处理来控制正常的程序流程。异常应该只处理那些非正常的、意外的情况,而不能用作常规控制结构的一部分。

5.3.2 异常管理在项目中的应用案例

在项目实践中,异常管理的应用案例可能会涉及多个模块和组件。例如,在一个数据库操作的模块中,可能会遇到各种异常情况,如连接失败、查询超时、数据完整性问题等。

在处理这些异常时,应当为每种异常定义相应的处理逻辑,甚至可以为异常定义优先级,确保最重要或最紧急的异常首先被处理。

数据库连接("数据库地址", "用户名", "密码")
try
    数据库_执行SQL("SELECT * FROM users")
catch 数据库异常型 异常对象
    ' 数据库操作异常
    信息框("数据库异常:" + 异常对象.获取信息())
    ' 根据异常信息可能的处理策略
catch SQL异常型 异常对象
    ' SQL语句执行错误
    信息框("SQL异常:" + 异常对象.获取信息())
catch 超时异常型 异常对象
    ' 超时异常
    信息框("超时异常:" + 异常对象.获取信息())
类结束

以上代码示例中展示了在数据库操作时可能遇到的几种异常情况,不同的异常类型被独立捕获并进行处理。这样可以确保异常处理的针对性和准确性。

异常处理是提高软件质量的重要手段,通过合理的异常捕获、记录和管理策略,可以提升程序的稳定性和可靠性。在易语言中,异常处理机制的利用可以显著减少因错误而引起的程序崩溃,提高开发效率和产品质量。

6. GUI界面设计实践

GUI(图形用户界面)是用户与计算机交互的主要方式,其设计质量直接影响用户体验。易语言作为中文编程语言,对中文用户来说,学习GUI界面设计不仅门槛较低,而且具有较高的实用价值。本章节我们将探讨如何在易语言中进行界面设计,包括基础概念、动态操作和高级技巧。

6.1 GUI界面设计概述

6.1.1 用户界面的重要性与设计原则

用户界面是应用程序与用户交流的桥梁。良好的用户界面应该直观、易用且美观。设计界面时,应当遵循以下原则:

  • 一致性 :界面元素和操作应保持一致性,减少用户的认知负荷。
  • 简洁性 :避免不必要的元素,确保用户能够快速找到所需功能。
  • 反馈性 :用户操作后,系统应给出及时和明确的反馈。
  • 可用性 :考虑到不同用户的能力和经验,界面应易于理解和操作。

6.1.2 易语言中的窗口与控件基础

易语言提供了丰富的控件来构建GUI界面,如按钮、文本框、列表框等。窗口是容纳这些控件的容器。创建一个基础的窗口和添加控件的基本步骤如下:

  1. 打开易语言开发环境,新建一个窗口程序。
  2. 在设计视图中,使用工具箱中的控件拖拽到窗口中。
  3. 设置控件的属性,如大小、位置、颜色等。
  4. 双击控件编写事件处理代码。

6.2 界面元素的动态操作

6.2.1 响应用户操作的控件事件

在易语言中,控件可以响应用户的操作,如点击、输入等。这些操作被转化为事件,并通过事件处理程序来响应。例如,一个按钮点击事件的代码示例如下:

.版本 2
.程序集 窗口程序集1
.子程序 _按钮1_被单击, 整数型, , , 按钮1
    信息框(“你点击了按钮!”)
返回 0

6.2.2 动态创建与管理窗口控件

动态操作允许程序在运行时根据需要创建或修改控件。在易语言中,可以使用“创建控件”函数动态添加控件,并设置相应的属性和事件。以下代码演示了如何动态创建一个文本框控件:

.版本 2
.子程序 动态创建文本框, 整数型, , , 
    窗口_创建控件(0, 100, 10, 100, 20, “文本框1”, 101)
    窗口_设置控件属性(101, “文本”, “初始文本”)
返回 0

6.3 高级GUI编程技巧

6.3.1 实现动态数据绑定与更新

在复杂的应用程序中,界面控件常常需要与后端数据进行动态绑定。易语言支持数据绑定机制,可以通过设置控件的数据源来实现。例如,将列表框与数据源绑定,并实现数据动态更新的代码片段如下:

.版本 2
.子程序 初始化数据源, 整数型, , , 
    数组_初始化(数据源)
    数组_添加项(数据源, “选项1”)
    数组_添加项(数据源, “选项2”)
    列表框_设置数据源(列表框1, 数据源)
返回 0

6.3.2 跨平台GUI开发的考虑与实践

跨平台开发是指应用程序能够在不同的操作系统上运行。易语言支持通过使用其提供的跨平台库来实现这一点。开发者需要注意以下事项:

  • 控件适配 :不同操作系统可能对控件的外观和行为有不同要求,需要适配。
  • 性能优化 :不同平台的性能差异可能需要针对性的优化代码。
  • 兼容性测试 :在不同平台上进行充分的测试,确保功能正常。

通过上述方法和技巧,我们可以在易语言中进行有效的GUI界面设计和开发,制作出既美观又实用的应用程序。在后续的章节中,我们将继续深入探讨易语言编程的更多高级主题。

本文还有配套的精品资源,点击获取 menu-r.4af5f7ec.gif

简介:易语言是一种简体中文编程语言,降低了编程门槛,便于非专业背景人员学习。本实例介绍如何使用易语言获取Internet Explorer(IE)浏览器中的网页信息。关键知识点包括网络通信、HTML解析、事件驱动编程、错误处理、界面设计和代码组织。此项目适合技术学习、毕业设计或小团队项目,有助于理解易语言网络编程及与IE浏览器的交互。

本文还有配套的精品资源,点击获取 menu-r.4af5f7ec.gif

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值