4.2.常用的HTML解析方法

Python解析html网页,掌握这4种方法就够了 在探索Python解析HTML网页的多样化途径中,本文综述了四大主流库的运用:BeautifulSoup以其直观的API和易用性成为初学者优选;lxml凭借C语言库的绑定 ,在速度和功能完整性上占据优势,特别适合XML和XPath重度用户;PyQuery则以类似jQuery的语法吸引了熟悉前端开发者的青睐;而requests-HTML库 ,通过异步渲染和自动处理JavaScript,高效应对动态网页抓取。每种方法各有千秋,选择最佳工具需依据具体需求:静态内容提取倾向BS或PyQuery 阅读详情

4.2.1.常用的HTML解析方法

        在Python中,常用的HTML解析方法包括以下几种:

4.2.1.1.Beautiful Soup

        Beautiful Soup是一个功能强大且易于使用的HTML解析库,可以快速从HTML文档中提取数据。它支持多种解析器,如Python标准库中的html.parser、lxml和xml等,可以根据需求选择合适的解析器。

        Beautiful Soup提供了简洁明了的API,可以通过标签名、属性、CSS选择器等方式来定位和提取HTML中的元素和内容。

        不是python自带的库,需要单独安装Beautifulsoup4,安装方法需要自行处理,但要安装Beautifulsoup4这个版本的。

        例:

from bs4 import BeautifulSoup
import requests

# 发送HTTP请求获取HTML内容
response = requests.get('http://www.baidu.com')
html_content = response.content

# 使用Beautiful Soup解析HTML
soup = BeautifulSoup(html_content, 'html.parser')

# 提取标题
title = soup.title.string
print(title)

# 定位某个元素并提取内容
element = soup.find('div', class_='head_wrapper')
if element is not None:
    print(element.text)
else:
    print("Element is None")

response.content若改成response.text的话,有的时候会产生乱码

        除了上面的创建beautifulsoup对象的方法外,还有一个方式:

                通过文件来创建,假如将字符串保存到index.html文件中,创建方式如下:

                soup = BeautifulSoup(open('index.html'))

        打印soup对象内容,格式化输出:

                soup.prettify()

4.2.1.1.1.下面是 Beautiful Soup 的一些主要特点和使用方法:
  1. 解析器选择: Beautiful Soup 可以根据需要选择不同的解析器来解析 HTML 或 XML 文档。默认情况下,Beautiful Soup 使用 Python 标准库中的 html.parser 解析器,但也支持其他解析器,如 lxml 和 html5lib。在创建 BeautifulSoup 对象时,可以通过指定解析器的参数来选择不同的解析器。

  2. 对象化文档树: Beautiful Soup 将 HTML 或 XML 文档解析为一个对象化的文档树结构,使用户可以方便地遍历和操作文档中的元素、标签和内容。用户可以像操作 Python 对象一样操作文档树,从而轻松地提取所需的信息。

  3. 标签、属性和内容提取: 使用 Beautiful Soup,可以通过标签名、类名、id 等属性来定位并提取文档中的特定元素。通过调用方法如 find()、find_all()、select() 等,用户可以根据指定的条件查找匹配的元素,并提取其标签、属性和文本内容等信息。

  4. CSS 选择器: Beautiful Soup 支持使用 CSS 选择器来定位文档中的元素。通过传递类似 CSS 选择器的字符串给 select() 方法,可以更灵活地定位元素,实现精确的数据提取。

  5. 处理异常情况: Beautiful Soup 能够处理一些异常情况,比如不完整的 HTML 文档或解析错误,使用户能够在实际应用中更加稳定地解析网页内容。

总的来说,Beautiful Soup 提供了一个简单而强大的工具,用于解析和提取 HTML 或 XML 文档中的数据。无论是进行网络爬虫开发、数据抓取还是网页内容分析,Beautiful Soup 都是一个非常实用的库。

4.2.1.1.2.beautifulsoup对象种别

在 Beautiful Soup 库中,有四种主要对象类型:

        1.Tag(标签)

        Tag(标签)是 HTML 或 XML 文档中的一个标签,如 <div>、<a> 等。可以通过直接访问标签名或属性来访问标签,例如 tag.name 或 tag['href']。

例:

from bs4 import BeautifulSoup

html = '<p class="content">This is a paragraph.</p>'
soup = BeautifulSoup(html, 'html.parser')
paragraph = soup.p

print(paragraph.name)  # p
print(paragraph['class'])  # ['content']
       2.NavigableString(可导航字符串)

         NavigableString(可导航字符串)表示 Beautiful Soup 找到的标签里的文本内容。NavigableString 对象与 Python 字符串类似。

例:

from bs4 import BeautifulSoup

html = '<p>This is a paragraph.</p>'
soup = BeautifulSoup(html, 'html.parser')
text = soup.p.string

print(type(text))  # <class 'bs4.element.NavigableString'>
print(text)
         3.BeautifulSoup(美味汤)

         BeautifulSoup(美味汤)表示整个文档。在解析文档时,BeautifulSoup 将文档转换成一个复杂的树形结构,每个节点都是一个 BeautifulSoup 对象。BeautifulSoup 对象本身并不是文档的顶层标签,而是包含整个文档的一个高级容器。

from bs4 import BeautifulSoup

html_doc = """
<html>
<head>
  <title>Beautiful Soup Demo</title>
</head>
<body>
  <div id="first-div">
    <h1>This is the first div</h1>
    <p>Some text here</p>
  </div>
  <div id="second-div">
    <h2>This is the second div</h2>
    <p>Some more text here</p>
  </div>
</body>
</html>
"""

soup = BeautifulSoup(html_doc, 'html.parser')

# 获取整个文档
print(soup)

# 获取文档的 title 标签
title = soup.title
print(title)

# 获取第二个 div 的内容
second_div = soup.find_all('div')[1]
content = second_div.get_text()

print(content)
          4.Comment(注释)

          Comment(注释)表示文档中的注释内容。例如 HTML 文档中的 <!--注释内容-->。Comment 对象与 NavigableString 类似,但是不能被搜索,因为它们不是真正的标签。

例:

from bs4 import BeautifulSoup, Comment

html_doc = """
<html>
<head>
  <title>Beautiful Soup Demo</title>
</head>
<body>
  <div id="first-div">
    <h1>This is the first div</h1>
    <p>Some text here</p>
  </div>
  <!-- This is a comment -->
  <div id="second-div">
    <h2>This is the second div</h2>
    <p>Some more text here</p>
  </div>
</body>
</html>
"""

soup = BeautifulSoup(html_doc, 'html.parser')

# 获取文档中的注释内容
comment = soup.find(string=lambda text: isinstance(text, Comment))
print(comment)
4.2.1.1.3. 遍历

beautifulsoup会将html转换成树的结构
例

from bs4 import BeautifulSoup

html_doc = """
<html>
<head>
  <title>Beautiful Soup Demo</title>
</head>
<body>
  <div id="first-div">
    <h1>This is the first div</h1>
    <p>Some text here</p>
  </div>
  <!-- This is a comment -->
  <div id="second-div">
    <h2>This is the second div</h2>
    <p>Some more text here</p>
  </div>
</body>
</html>
"""

soup = BeautifulSoup(html_doc, 'html.parser')
# 1
print(soup.body.div.h1.contents)

# 2
for child in soup.body.children:
    print(child)

# 3
# 对子孙节点进行递归遍历
for child in soup.body.descendants:
    print(child)

# 4
for st in soup.body.div.strings:
    print(repr(st))

# 5
print(soup.body.div.h1.parent)

# 6
el = soup.find_all('div')
print(el[0].h1.next_sibling.next_sibling)

# 7
print(el[0].p.previous_sibling.previous_sibling)

# 8
for e in soup.body.div.next_siblings:
    print(repr(e))

# 9 output:This is the first div
print(soup.body.div.h1.next_element)

# 10
for el in soup.body.div.contents:
    print(repr(el))

例.通过参数,限定检索范围

from bs4 import BeautifulSoup

html_doc = """
<html>
<head>
  <title>Beautiful Soup Demo</title>
</head>
<body>
  <div id="first-div">
    <h1>This is the first div</h1>
    <p class="content">Some text here</p>
  </div>
  <div id="second-div">
    <h2>This is the second div</h2>
    <p class="content">Some more text here</p>
  </div>
</body>
</html>
"""

soup = BeautifulSoup(html_doc, 'html.parser')

# 使用 kwargs 参数查找 class 为 "content" 的 p 元素,限制只返回一次
paragraphs = soup.find_all('p', class_='content', limit=1)

for paragraph in paragraphs:
    print(paragraph.text)
4.2.1.1.4.select()

下面是关于 Beautiful Soup 的 CSS 选择器的详细讲解以及示例:

  1. 基本语法:

    • 使用 select() 方法来选择匹配特定 CSS 选择器的元素。
    • 在 CSS 选择器中,可以使用标签名、类名、ID 等属性来定位元素。
  2. 常见的 CSS 选择器:

    • 标签选择器:通过标签名选择元素,例如 div、p、a 等。
    • 类选择器:通过类名选择元素,使用点 . 开头,例如 .class-name。
    • ID 选择器:通过 ID 名选择元素,使用井号 # 开头,例如 #id-name。
    • 属性选择器:通过元素属性选择元素,例如 [attribute=value]。
    • 组合选择器:可以组合多个选择器,例如 tag.class、tag#id 等。

例:

from bs4 import BeautifulSoup

html_doc = """
<html>
<head>
  <title>Beautiful Soup Demo</title>
</head>
<body>
  <div id="first-div">
    <h1>This is the first div</h1>
    <p class="content">Some text here</p>
  </div>
  <div class="second-div">
    <h2>This is the second div</h2>
    <p class="content">Some more text here</p>
  </div>
</body>
</html>
"""

soup = BeautifulSoup(html_doc, 'html.parser')

# 选择所有 <div> 元素
divs = soup.select('div')
for div in divs:
    print(div.text)

# 选择具有 class="content" 的 <p> 元素
paragraphs = soup.select('p.content')
for p in paragraphs:
    print(p.text)

# 选择具有 id="first-div" 的 <div> 元素
first_div = soup.select('div#first-div')
print(first_div[0].text)

4.2.1.2.lxml

        lxml是一个高性能的XML与HTML解析库,提供了XPath和CSS选择器等强大的定位和提取功能。lxml速度较快,支持XML和HTML的解析和处理,同时也支持XPath查询,适合处理大型文档或复杂的解析任务。

        例:

from lxml import etree
import requests

# 发送HTTP请求获取HTML内容
response = requests.get('http://www.baidu.com')
html_content = response.content

print(html_content)

# 使用lxml解析HTML
tree = etree.HTML(html_content)

# 提取标题
title = tree.xpath('//title/text()')[0]
print(title)

# 定位某个元素并提取内容
content = tree.xpath('//a[@href="http://map.baidu.com"]/text()')[0]
if content is not None:
    print(content)
else:
    print("content is None")

例:保持格式输出

from lxml import etree

html_doc = """
<html>
<head>
  <title>Beautiful Soup Demo</title>
</head>
<body>
  <div id="first-div">
    <h1>This is the first div</h1>
    <p>Some text here</p>
  </div>
  <!-- This is a comment -->
  <div id="second-div">
    <h2>This is the second div</h2>
    <p>Some more text here</p>
  </div>
</body>
</html>
"""

html = etree.HTML(html_doc)
result = etree.tostring(html).decode('utf-8')
print(result)
 4.2.1.3.html.parser

        Python标准库中的html.parser模块提供了简单的HTML解析器,可以用于基本的HTML解析任务。虽然功能不如Beautiful Soup和lxml强大,但对于简单的HTML解析任务来说已经足够。

        例:

from html.parser import HTMLParser
import requests

class MyHTMLParser(HTMLParser):
    def handle_starttag(self, tag, attrs):
        print("Encountered a start tag:", tag)

    def handle_endtag(self, tag):
        print("Encountered an end tag :", tag)

# 发送HTTP请求获取HTML内容
response = requests.get('http://www.baidu.com')
html_content = response.text

# 使用HTMLParser解析HTML
parser = MyHTMLParser()
parser.feed(html_content)

这里不能将response.text修改为response.content,修改后会有错误。

Python爬虫beautifulsoup4常用的解析方法总结 今天小编就为大家分享一篇关于Python爬虫beautifulsoup4常用的解析方法总结,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧 摘要 如何用beautifulsoup4解析各种情况的网页 beautifulsoup4的使用 关于beautifulsoup4,官网已经讲的很详细了,我这里就把一些常用的解析方法做个总结,方便查阅。 装载html文档... 阅读详情

相关推荐

python 使用bs4 解析html页面

python 使用bs4 解析html页面 前言 前几天要复制一整个html页面的内容到excel表格里,我觉得复制太麻烦所以写一个爬虫自动爬数据简单快捷,页面爬下来以后想获取html标签中的数据结果没有找到比较好的办法所以我就自己研究并整理发上来 页面是这个样子的,我们可以看到这个页面大体分为四个部分,而我想要页面上的所有数据,所以我也根据他这四个部分一点点的解析 接下来看一下页面的源代码 从这个图我们可以看出整个页面分为两部分 上面(1)部分为导航栏在<nav>标签中,(2)部分为详情,包括

qq_27399的博客 3451

HTML在线解析:方便、快捷、高效

HTML在线解析工具是Web开发者必不可少的一个工具,可以提高开发效率,快速编辑和调试HTML代码。无论是修改HTML代码、比较HTML代码、解析HTML代码、教育培训还是团队协作开发,HTML在线解析工具都能提供良好的解决方案。由于HTML在线解析工具提供了直观的代码解析方式,我们可以使用它快速解析和找到需要修改的代码部分。对于HTML初学者,使用HTML在线解析工具可以让他们更方便地了解HTML语言的结构和知识点,并帮助他们学习和掌握HTML编程基础。不同的HTML在线解析工具具有不同的功能和特点。

羊逸羊的博客 4489

HTML解析器:简化网页内容处理的编程工具

在Python中,有一些常用的HTML解析器库可供选择,例如Beautiful Soup和lxml。函数读取HTML文件的内容,并将其传递给Beautiful Soup的构造函数,创建一个Beautiful Soup对象。通过使用HTML解析器,我们可以更加方便地处理和提取HTML文档中的内容。安装完成后,我们可以开始编写代码来解析HTML文档。在本文中,我们将介绍HTML解析器的基本概念和用法,并提供相应的源代码示例来说明其工作原理。在上面的示例中,我们提取了HTML文档中的标题、正文内容和列表项。

CyberFlare的博客 723

HTML详解

HTML 概念:HTML(Hypertext Markup Language ) 超文本标记语言。 HTML 不是一种编程语言,而是一种标记语言。 Html主要用来描述网页中所需要的组件,例如:文本框、表格、图片、视频等等,也对网页进行排版。 HTML的源文件,称为“网页”,通常以.html或者.htm为结尾。 可以使用任意文本编辑器编辑,需要使用浏览器执行。 访问:https://www.w3school.com.cn/ 1 标记(标签)基本语法 1.定义标签 HTML语言以标签形式体现,这些标签通常

weixin_40055163的博客 1万+

java 中开源的html解析库 介绍

java 中开源的html解析库 介绍

u013558123的博客 1164

PHP中解析HTML的常用方法

本文介绍了一些常用的PHP方法和技巧,用于解析HTML文档。虽然在处理复杂的HTML文档时可能会有一些限制,但对于简单的HTML解析任务,它是一种简洁而有效的方法。在PHP中,解析HTML是一个常见的任务,我们可以使用各种方法来处理和操纵HTML文档。其中一种常用的库是"Simple HTML DOM",它提供了类似于jQuery的选择器语法,方便地从HTML文档中提取和操纵数据。上面的代码中,我们首先包含了"Simple HTML DOM"库的文件,然后使用。在上面的代码中,我们使用正则表达式。

DsJustintime的博客 399

Python爬虫 —— 使用BeautifulSoup4解析HTML文档

我们来聊聊BS4是个啥,它能干啥,BS4是一个从HTML和XML文件中提取数据的python库,它可以将复杂HTML文件转换为一个复杂的树形结构,这棵树的每一个结点都是Python对象,所有对象都可以归纳为4类,这四个对象能干啥呢?点进来看看吧

小菜鸡的小博客 1万+

【创作赢红包】Gurobi学术版证书更新与Python环境配置全攻略

本文详细解析了Gurobi学术版证书过期后的完整更新流程与Python环境配置方法。从彻底清理旧版残留、手把手注册获取新许可证,到软件安装、证书激活,最后重点讲解如何将gurobipy接口正确配置到Python的site-packages目录,并提供了常见问题排查方案,帮助用户高效解决证书与配置难题。

efc1234567的博客 613

Python爬虫技术系列-02HTML解析-BS4

关于爬虫的HTML解析案例

IT从业者的成长历程 4645

Ubuntu安装opencv4.5(自己安装过程详细)

1.下载opencv 在opencv官网下载source版,下载链接 http://opencv.org/releases.html。别下载错版本 下载过程就不多说了。 2.安装过程 2.1解压 unzip opencv-4.5.0.zip cd opencv-4.5.0 2.2安装依赖的库 sudo apt-get install cmake sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-

weixin_45629790的博客 1万+

Python开发者必看:5分钟搞定Gemini API的3种调用方式(含代码示例)

本文为Python开发者详细介绍了三种高效调用Gemini API的核心方式:基础同步调用、流式调用和聊天模式,并涵盖多模态应用等高级特性。通过清晰的代码示例和实战场景分析,帮助开发者快速掌握Gemini API的集成与优化,提升AI应用开发效率。

g8f9d0s1a2的博客 1122

BeautifulSoup解析 HTML标签Tag及属性attrs的常用方法

BeautifulSoup 对象表示整个解析树或文档,可以用来遍历、搜索和操作文档

book_dw5189的博客 4270

高效利用ChEMBL数据库:从靶点查询到活性数据处理的完整指南

本文提供了高效利用ChEMBL数据库的完整指南,从靶点查询到活性数据处理。详细介绍了靶点精准定位、高级过滤技巧、数据导出优化以及活性数据清洗、特征工程和可视化等实战技巧,帮助药物研发人员快速获取和处理生物活性数据,提升工作效率。

weixin_29278805的博客 797

自学Python第十五天-常用的HTML解析工具:bs4、xpath、re

之前应该写过关于 bs4、xpath、re 的python使用文章,但是找不到了。因为这3种工具在 html 解析中经常用到,所以重新写一遍。在 python 学习中绕不过去的就是,学习爬虫绕不过去的就是,而最常用的解析工具就是和了。

runsong911的博客 1293

《QGIS快速入门与应用基础》108:CGCS2000对应的投影坐标系

本文详细解析了CGCS2000地理坐标系对应的各类投影坐标系,包括高斯-克吕格3°带/6°带、UTM、地方独立投影和Web墨卡托投影。文章系统阐述了各投影类型的分带规则、参数设置、精度特性及适用场景,并提供了EPSG编码对照表和QGIS操作指南。通过"基准+投影"的绑定机制,这些投影坐标系实现了平面坐标与经纬度的精准转换,满足从大比例尺工程测量到Web地图服务等不同应用需求。内容涵盖投影原理、坐标格式、变形控制等关键技术要点,为GIS开发者和测绘人员提供了实用的参考信息。

LuckyHanMo的博客 542

IP-Guard分类管理详解

大家都知道在配置IPGUARD策略前需要做分类库进行设置和分类。 1、应用程序:可以分类,例如上班时间只能用OFFICE和WPS,记事本等办公软件,可以在分类里设置一个类 ;办公软件,在未分类里找到OFFICE,WPS等拖入心建的分类里就可以在配置策略里调用。 2、网站分类也不一样,可以按照自己方式自定义。也可以导入厂家已经收集到的网站分类。 3、邮箱分类:可以提前定义好一个或...

IP-Guard专栏 589

Node.js 中 HTML 解析全面指南:探索不同的方法

Node.js 提供了多种方法来解析 HTML,包括 Cheerio、jsdom 和 htmlparser2。选择适合你需求的库,可以轻松地操作和提取网页内容。期待 ~【保证100%免费】

NHB222222的博客 1315

103、模拟增益vs数字增益:信噪比、动态范围与噪声放大的权衡艺术及调试陷阱

摘要 本文深入探讨了模拟增益与数字增益在图像处理中的差异及其对信噪比、动态范围和噪声放大的影响。作者通过实际案例揭示了数字增益可能导致的噪点放大问题,分析了模拟增益在物理层面对信号和噪声的放大机制,以及数字增益对量化噪声的影响。文章详细比较了两种增益方式下信噪比的变化曲线,指出数字增益会平方放大量化噪声的致命缺陷。此外,作者总结了常见的调试陷阱,并提供了针对不同光照场景的增益分配策略建议。最后强调调试时应优先考虑模拟增益,严格控制数字增益幅度,并配合降噪算法优化以获得最佳图像质量。

zzfmlxs的博客 48

获取get方法名_Python爬虫beautifulsoup4常用的解析方法总结

今天小编就为大家分享一篇关于Python爬虫beautifulsoup4常用的解析方法总结,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧如何用beautifulsoup4解析各种情况的网页beautifulsoup4的使用关于beautifulsoup4,官网已经讲的很详细了,我这里就把一些常用的解析方法做个总结,方便查阅。装载html文档使用beaut...

weixin_39522486的博客 505

Android14 Qcom 从Framework到Driver带你连接WIFI(一)

前面已经讲完了WIFI打开的流程,那么通过UI这时候是可以选择需要连接的网络进行连接。从这里开始我们看连接的流程。

IAYLBL的博客 696

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Jsoup解析HTML常用方法

使用Jsoup提取HTML纯文本 Document document = Jsoup.parse(html); document.text() 获取第一个a标签属性href的值 node.select("a").first().attr("href") Elements titleEle = node.select(".post_item_body a[class='titlelnk']"); 通过标签title获取对象 document.getElementsByTag("title".

瑶山的博客 1321

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

HTML网页解析之Xpath,bs4及re

HTML网页解析篇 1.常用工具介绍 Xpath:XPath即为XML路径语言(XML Path Language),它是一种用来确定XML文档中某部分位置的语言。 bs4:一个HTML/XML 的解析器,主要用于解析和提取 HTML/XML 数据。 re:正则表达式是一种通用的字符串表达框架,用来基于匹配模式测试字符串内的模式,替换文本和查找文本。 2.各工具详解 2.1 Xpath XPa...

hu_hao的博客 1944

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

【Python 解析 HTML 的常用方法及工具】

Python解析HTML的常用方法包括:1)BeautifulSoup(易用,依赖解析器如lxml);2)lxml(高性能,支持XPath/CSS);3)PyQuery(类jQuery语法);4)html.parser(标准库,功能有限);5)正则表达式(简单但易出错)。推荐BeautifulSoup或lxml处理复杂需求,注意编码和动态网页问题。正则表达式仅适合简单场景。

qq_33764107的博客 396

4种HTML结构化解析方法

1. dom解析方式 2. 字符串首尾截取 3. 正则表达式 4. 通用型,分析能力有限,但能兼容大部分网站

a286352250的博客 2801

BeautifulSoup4: Python HTML 和 XML 解析的强大工具介绍

BeautifulSoup4 介绍

威桑的博客 1016

8-python之数据解析bs4方法解析

本文是针对bs4方法使用的简单介绍。

2401_87633706的博客 972
上一篇: 4.1.浏览器的开发者工具
下一篇: 正则表达式
sty3318
博客等级 码龄18年 212粉丝 20原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值