跳转到主内容
websoft网络软件专家 - 深耕网络技术,打造实用软件!

Python爬虫(三)- BeautifulSoup 安装与使用教程

文章目录 前言 一、简介及安装 1. 简介 2. 安装 BeautifulSoup 相关库 2.1 安装 2.2 检查安装是否成功 3. 几种解析器的比较 二、使用 BeautifulSoup 解析文档 1. 准备一个 HTML 文档 2. 使用 BeautifulSoup 解析本地 HTML 文档 2.1 将 HTML 文件作为输入 2.2 将字符串作为输入 3. 对象种类 3.1 Tag(获取标签) 3.1.1 获取标签及内容 3.1.2 获取标签名 3.1.3 标签属性操作 3.2 获取标签之间的内容 3.3 获取标签之间的注释内容 三、获取标签 1. 获取HTML文档中的标签及内容 1.1 用法 1.2 示例 2. 获取标签属性 2.1 用法 2.2 示例 3. 获取标签间的内容 3.1 用法 3.2 示例 4. 获取指定标签的子节点标签及内容 4.1 用法 4.2 示例 5. 获取指定标签的父节点 5.1 用法 5.2 示例 6. 查找所有符合条件的标签 6.1 `name` 参数 6.2 `attrs` 参数 6.3 `string` 参数 6.4 `limit` 参数 6.5 `recursive` 参数 使用示例 7. 查找第一个符合条件的标签 7.1 查找标签 7.2 使用属性查找 7.3 使用多个属性查找 7.4 使用文本查找 7.5 使用正则表达式 7.6 查找子标签 8. CSS选择器查找标签 8.1 使用标签选择 8.2 使用类选择器 8.3 使用ID选择器 8.4 组合选择器 8.5 后代选择器 8.6 子元素选择器 8.7 属性选择器 8.8 伪类选择器 前言 本篇文章将详细介绍BeautifulSoup的基本概念、安装步骤、解析器的比较,以及如何使用该库解析HTML文档。

我们将通过实际示例演示如何使用BeautifulSoup获取标签、属性和内容,帮助读者快速上手并应用于实际项目中。

一、简介及安装 1. 简介

BeautifulSoup

是一个用于解析 HTML 和 XML 文档的 Python 库,它帮助你从网页中提取数据。

这个库非常灵活,并且可以与多种不同的解析器一起工作,比如 Python 内置的

html.parser

lxml

或者

html5lib

使用版本: pythonrequestsbs4beautifulsoup4soupsievelxml 版本3.8.52.31.00.0.24.12.32.64.9.3 2. 安装 BeautifulSoup 相关库 2.1 安装 执行如下命令安装 BeautifulSoup 相关库。

pip install bs4==0.0.2 -i https://mirrors.aliyun.com/pypi/simple/

pip install beautifulsoup4==4.12.3 -i https://mirrors.aliyun.com/pypi/simple/ pip install soupsieve==2.6 -i https://mirrors.aliyun.com/pypi/simple/ pip install lxml==4.9.3 -i https://mirrors.aliyun.com/pypi/simple/

2.2 检查安装是否成功 执行如下命令查看

BeautifulSoup

相关库是否安装成功。

pip show bs4

pip show beautifulsoup4 pip show soupsieve pip show lxml

安装成功如下图所示。

3. 几种解析器的比较 解析器使用方法优势劣势 Python 标准库BeautifulSoup(markup, "html.parser")- Python 的内置标准库- 执行速度较快- 容错能力强- 速度没有 lxml 快,容错性没有 html5lib 强lxml HTML 解析器BeautifulSoup(markup, "lxml")- 速度快- 容错能力强- 需要额外的 C 依赖lxml XML 解析器BeautifulSoup(markup, ["lxml-xml"])BeautifulSoup(markup, "xml")- 速度快- 唯一支持 XML 的解析器- 需要额外的 C 依赖html5libBeautifulSoup(markup, "html5lib")- 最好的容错性- 以浏览器的方式解析文档- 生成 HTML5 格式的文档- 速度慢- 需要额外的 Python 依赖 二、使用 BeautifulSoup 解析文档 1. 准备一个 HTML 文档 准备一个名称为

test.html

的 HTML 文档,以便随后使用 BeautifulSoup 进行解析。

测试 HTML 文档

欢迎来到测试页面

这是一个用于测试的 HTML 文档。

第一节标题

这里是第一节的内容。

外部链接 1

第二节标题

这是第二节的内容。

外部链接 2

重复元素部分

这段文字会在文档中多次出现。

这段文字也会在文档中多次出现。

重复的外部链接 1 重复的外部链接 2

这段文字会在文档中多次出现。

重复的外部链接 1

2. 使用 BeautifulSoup 解析本地 HTML 文档 解析文档时,可以将HTML文档传入

BeautifulSoup

的构造方法,可以传递一段字符串或一个HTML文件作为输入。

解析过程 :首先,

BeautifulSoup

会自动将文档转换为

Unicode

,并且 HTML 中的实体也会被转换成 Unicode 编码;然后,

BeautifulSoup

会选择最合适的解析器来解析文档,如果指定了解析器那么 Beautiful Soup 会选择指定的解析器来解析文档。

2.1 将 HTML 文件作为输入 在 Python 中,

with

语句用于封装执行某个操作前后的代码块,通常用于确保资源能够被正确地清理或释放。

它最常用于文件操作,可以保证文件在使用完毕后自动关闭,即使期间发生了异常也不会忘记关闭文件。

from bs4 import BeautifulSoup

# 从文件中读取 HTML 文档并解析 with open(file="test.html", mode='r', encoding='utf-8') as fp: # 创建一个 BeautifulSoup 对象来解析 HTML 文档 # markup 参数传入文件对象 fp,BeautifulSoup 将会读取该文件的内容进行解析。

# features 参数指定使用的解析器,这里是 'html.parser',它是 Python 内置的标准库解析器。

soup = BeautifulSoup(markup=fp, features='html.parser')

# 打印 HTML 文档内容,且是经过美化的 print(soup.prettify())

打印的部分结果为:

2.2 将字符串作为输入

from bs4 import BeautifulSoup

# 直接传递字符串进行解析 soup = BeautifulSoup(markup="a web page", features='html.parser') print(soup.prettify())

打印的结果为:

a web page

3. 对象种类

BeautifulSoup

将复杂的 HTML 文档转换成由 Python 对象构成的树形结构,主要包括以下四种类型的对象:

Tag

,

NavigableString

,

BeautifulSoup

, 和

Comment

Tag

:表示标签。

NavigableString

:表示标签之间的文本内容。

BeautifulSoup

:表示整个解析后的文档。

Comment

:一种特殊的

NavigableString

,表示 HTML 中标签之间的注释。

3.1 Tag(获取标签)

Tag

对象与 XML 或 HTML 原生文档中的 标签 相同。

3.1.1 获取标签及内容

from bs4 import BeautifulSoup

with open(file="test.html", mode='r', encoding='utf-8') as fp: soup = BeautifulSoup(markup=fp, features='html.parser') # 查找并获取HTML文档中的第一个

标签。

h2_tag = soup.h2 # 打印找到的

标签及其内部的内容(如果有的话)。

如果没有找到

标签,则打印None。

print(h2_tag) # 打印

标签的数据类型。

如果是有效的标签,它将是bs4.element.Tag 类型;如果没有找到标签,则是NoneType。

print(type(h2_tag))

打印的结果为:

第一节标题

3.1.2 获取标签名 每个

Tag

都有一个名字和多个属性,名称可以通过

.name

访问或修改。

from bs4 import BeautifulSoup

with open(file="test.html", mode='r', encoding='utf-8') as fp: soup = BeautifulSoup(markup=fp, features='html.parser') # 查找并获取HTML文档中的第一个

标签。

h2_tag = soup.h2 print(h2_tag) # 打印标签名 print(h2_tag.name) # 修改标签名后打印,并不会修改原HTML文档中的标签名 h2_tag.name = 'h3' print(h2_tag.name)

打印的结果为:

第一节标题

h2 h3

3.1.3 标签属性操作 一个 HTML 或 XML 标签可能有许多属性,可以像处理字典一样处理这些属性。

from bs4 import BeautifulSoup

with open(file="test.html", mode='r', encoding='utf-8') as fp: soup = BeautifulSoup(markup=fp, features='html.parser') # 查找并获取HTML文档中的第一个 img 标签。

img_tag = soup.img # 打印标签内容 print(img_tag) # 以字典方式获取所有属性的键和值 print(img_tag.attrs) # 获取img标签中属性alt的值,如果属性不存在报KeyError错误 print(img_tag['alt']) # 获取img标签中属性alt的值,如果属性不存在返回None print(img_tag.get('alt')) print(img_tag.attrs.get('alt')) img_tag['alt'] = '修改后的alt' # 打印修改后的alt的值 print(img_tag['alt']) # 删除属性 del img_tag['alt'] # 打印标签内容 print(img_tag)

打印的结果为:

{'src': 'image1.jpg', 'alt': '图片描述 1', 'id': 'img1', 'class': ['image']} 图片描述 1 图片描述 1 图片描述 1 修改后的alt

3.2 获取标签之间的内容

from bs4 import BeautifulSoup

with open(file="test.html", mode='r', encoding='utf-8') as fp: soup = BeautifulSoup(markup=fp, features='html.parser') # 查找并获取HTML文档中的第一个 h1 标签。

h1_tag = soup.h1 # 打印标签内容 print(h1_tag) # 获取标签之间的文本内容,如果标签中还有标签,则返回None print(h1_tag.string) # 获取标签之间的文本内容,如果标签中还有标签,则获取所有二级标签的内容(以换行分隔) print(h1_tag.get_text())

打印的结果为:

欢迎来到测试页面

欢迎来到测试页面 欢迎来到测试页面

3.3 获取标签之间的注释内容

from bs4 import BeautifulSoup

markup = ""

soup = BeautifulSoup(markup=markup, features='html.parser')

# 获取 标签 b_tag = soup.b # 打印 标签的内容 print(b_tag) # 获取 标签中的字符串内容(在这里是一个注释) comment = b_tag.string # 打印 comment 的类型 print(type(comment)) # 打印 comment 的内容 print(comment)

打印的结果为:

Hey, buddy. Want to buy a used parser?

三、获取标签

from bs4 import BeautifulSoup

with open(file="test.html", mode='r', encoding='utf-8') as fp: soup = BeautifulSoup(markup=fp, features='html.parser') print(下面的示例代码)

以下内容都基于此soup对象。

1. 获取HTML文档中的标签及内容 1.1 用法

soup.标签名

1.2 示例 获取HTML文档中的第一个head标签。

soup.head

获取HTML文档中的第一个head标签下的第一个title标签。

soup.head.title

获取HTML文档中的第一个img标签。

soup.img

2. 获取标签属性 2.1 用法 获取指定标签所有属性的键和值。

soup.标签名.attrs

获取指定标签的指定属性键的值。

如果属性键不存在会报

KeyError

错误。

soup.标签名['属性键']

获取指定标签的指定属性键的值。

如果属性键不存在返回

None

soup.标签名.get('属性键') soup.标签名.attrs.get('属性键')

2.2 示例 获取第一个

img

标签所有属性的键和值。

soup.img.attrs

获取第一个

img

标签的

alt

属性的值。

soup.img['alt']

soup.img.get('alt') soup.img.attrs.get('alt')

3. 获取标签间的内容 3.1 用法 获取标签之间的文本内容,如果标签中还有标签,则返回None。

soup.标签名.string

获取标签之间的文本内容,返回可迭代列表。

soup.标签名.strings

获取标签之间的文本内容,返回可迭代列表, 可以去除多余空白内容 。

soup.标签名.stripped_strings

获取标签之间的文本内容,如果标签中还有标签,则获取所有二级标签的内容(以换行分隔)。

soup.标签名.get_text()

3.2 示例 获取标签

h1

之间的文本内容,如果标签中还有标签,则返回None。

soup.h1.string

循环 获取标签

section

之间的文本内容。

for string in soup.section.strings:

print(string)

循环 获取标签

section

之间的文本内容, 去除多余空白内容 。

for string in soup.section.stripped_strings:

print(string)

获取标签

h1

之间的文本内容,如果标签中还有标签,则获取所有二级标签的内容(以换行分隔)。

soup.h1.get_text()

4. 获取指定标签的子节点标签及内容 4.1 用法 获取指定标签的 所有 子节点标签及内容。

soup.标签名.contents

获取指定标签的 所有 子节点标签及内容,返回一个可迭代列表。

soup.标签名.children

递归 获取指定标签的 所有 子节点标签及内容。

soup.标签名.descendants

获取指定标签的 指定索引 子节点标签及内容。

soup.标签名.contents[索引]

4.2 示例 获取

head

标签的子节点。

soup.head.contents

soup.head.contents[1] soup.head.contents[1].name

获取

head

标签的子节点。

for tag in soup.head.children:

print(tag)

递归获取

head

标签的子节点。

for tag in soup.head.descendants:

print(tag)

5. 获取指定标签的父节点 5.1 用法 获取指定标签的父节点。

soup.标签名.parent

递归 获取指定标签的父节点。

soup.标签名.parents

5.2 示例 获取

title

标签的父节点。

soup.title.parent

递归 获取

title

标签的父节点。

for parent in soup.title.parents:

print(parent)

6. 查找所有符合条件的标签

find_all()

方法是 Beautiful Soup 中最常用的搜索方法之一,它可以在当前标签的所有子节点中查找符合条件的标签。

该方法的基本语法如下:

find_all(name, attrs, recursive, string, **kwargs)

6.1

name

参数 功能 :传入一个值用于查找所有名称为

name

的标签。

所有文本内容会被忽略,因为它们不匹配标签名称。

用法示例 :

soup.find_all("title")

6.2

attrs

参数 功能 :如果在动态参数中出现未识别的参数名,Beautiful Soup 会将该参数视为标签属性进行搜索。

例如,若搜索参数中包含

id

,则会搜索每个标签的

id

属性。

用法示例 :

soup.find_all(id='link2')

6.3

string

参数 功能 :通过

string

参数可以搜索文档中的字符串内容。

该参数接受字符串、正则表达式、列表、函数或

True

用法示例 :

soup.find_all(string="Elsie")

6.4

limit

参数 功能 :限制返回结果的数量,类似于 SQL 中的

LIMIT

关键字。

当搜索到的结果数量达到限制时,停止搜索并返回结果。

用法示例 :

soup.find_all("a", limit=2)

6.5

recursive

参数 功能 :控制是否检索所有子孙节点。

如果设置为

False

,则只搜索直接子节点。

用法示例 :

soup.html.find_all("title", recursive=False)

使用示例 以下是一些使用

find_all()

方法的示例:

from bs4 import BeautifulSoup

# 示例 HTML 文档 html_doc = """

The Dormouse's story

The Dormouse's story

Elsie Lacie Tillie

"""

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

# 查找所有 标签 titles = soup.find_all("title") print(titles) </p> <p> # 查找所有具有 class 为 "title" 的 <p> 标签 paragraphs = soup.find_all("p", "title") print(paragraphs) </p> <p> # 查找所有 <a> 标签 links = soup.find_all("a") print(links) </p> <p> # 查找特定 id 的标签 specific_link = soup.find_all(id="link2") print(specific_link) </p> <p> # 使用正则表达式查找字符串 import re sisters = soup.find(string=re.compile("sisters")) print(sisters) </p> </code> <p> 7. 查找第一个符合条件的标签 在Beautiful Soup 4(bs4)中, </p> <code>find()</code> <p> 方法是用于查找文档中第一个符合条件的标签。</p> <p>它非常强大且灵活,可以通过多种方式指定查找条件。</p> <p>以下是 </p> <code>find()</code> <p> 方法的详解: 7.1 查找标签 使用 </p> <code>find()</code> <p> 查找第一个匹配的标签: </p> <code>title_tag = soup.find('title') <p> print(title_tag) </p> </code> <p> 7.2 使用属性查找 可以通过标签的属性进行查找: </p> <code>first_sister = soup.find('a', class_='sister') <p> print(first_sister) </p> </code> <p> 7.3 使用多个属性查找 可以同时指定多个属性: </p> <code>link = soup.find('a', {'class': 'sister', 'id': 'link2'}) <p> print(link) </p> </code> <p> 7.4 使用文本查找 可以通过标签的文本内容查找: </p> <code>story_paragraph = soup.find('p', string="Once upon a time there were three little sisters; and their names were") <p> print(story_paragraph) </p> </code> <p> 7.5 使用正则表达式 可以使用正则表达式进行更复杂的匹配: </p> <code>import re <p> regex_link = soup.find('a', href=re.compile(r'example\.com')) print(regex_link) </p> </code> <p> 7.6 查找子标签 可以在特定标签内查找子标签: </p> <code>body = soup.find('body') <p> first_paragraph = body.find('p') print(first_paragraph) </p> </code> <p> 8. CSS选择器查找标签 在Beautiful Soup 4(bs4)中, </p> <code>select()</code> <p> 方法是用于根据CSS选择器查找标签的强大工具。</p> <p> 8.1 使用标签选择 可以直接使用标签名选择元素: </p> <code>title_tags = soup.select('title') <p> print(title_tags) </p> </code> <p> 8.2 使用类选择器 使用点( </p> <code>.</code> <p> )选择类: </p> <code>sister_links = soup.select('.sister') <p> print(sister_links) </p> </code> <p> 8.3 使用ID选择器 使用井号( </p> <code>#</code> <p> )选择ID: </p> <code>link1 = soup.select('#link1') <p> print(link1) </p> </code> <p> 8.4 组合选择器 可以组合选择器来更精确地选择元素: </p> <code>first_story_paragraph = soup.select('p.story') <p> print(first_story_paragraph) </p> </code> <p> 8.5 后代选择器 使用空格选择后代元素: </p> <code>bold_text = soup.select('p b') <p> print(bold_text) </p> </code> <p> 8.6 子元素选择器 使用大于号( </p> <code>></code> <p> )选择直接子元素: </p> <code>direct_children = soup.select('body > p') <p> print(direct_children) # 输出: [<p class="title"><b>The Dormouse's story</b></p>, <p class="story">...</p>] </p> </code> <p> 8.7 属性选择器 可以根据属性进行选择: </p> <code>specific_link = soup.select('a[href="http://example.com/lacie"]') <p> print(specific_link) </p> </code> <p> 8.8 伪类选择器 可以使用伪类选择器,例如选择第一个元素: </p> <code>first_sister = soup.select('.sister:first-child') <p> print(first_sister) </p> </code> </div> <!-- 文章导航 --> <nav class="phpwebsoft-article-nav" aria-label="文章导航"> <a href="http://www.phpwebsoft.com/news/191.html" class="phpwebsoft-article-nav-link phpwebsoft-article-nav-prev"> <span>‹</span> <div> <div class="phpwebsoft-article-nav-label">上一篇</div> <div class="phpwebsoft-article-nav-title">淘宝好评率怎么查?看完这篇你就知道了!</div> </div> </a> <a href="http://www.phpwebsoft.com/news/193.html" class="phpwebsoft-article-nav-link phpwebsoft-article-nav-next"> <div> <div class="phpwebsoft-article-nav-label">下一篇</div> <div class="phpwebsoft-article-nav-title">Win7文件/文件夹删不掉怎么办?</div> </div> <span>›</span> </a> </nav> </div> </article> <!-- 相关文章列表 --> <section class="phpwebsoft-content-section" style="margin-top: 20px;"> <h2 class="phpwebsoft-widget-title" style="margin-bottom: 20px;">相关文章</h2> <ul class="phpwebsoft-article-list"> <li class="phpwebsoft-article-item"> <a href="http://www.phpwebsoft.com/news/191.html" class="phpwebsoft-article-link">淘宝好评率怎么查?看完这篇你就知道了!</a> <div class="phpwebsoft-article-meta">2026-06-19</div> </li> <li class="phpwebsoft-article-item"> <a href="http://www.phpwebsoft.com/news/190.html" class="phpwebsoft-article-link">进程互斥怎么搞?CreateMutex() 函数深度解析</a> <div class="phpwebsoft-article-meta">2026-06-19</div> </li> <li class="phpwebsoft-article-item"> <a href="http://www.phpwebsoft.com/news/189.html" class="phpwebsoft-article-link">KCV(密钥验证值)怎么算?DES/3DES或AES算法示例详解!</a> <div class="phpwebsoft-article-meta">2026-06-19</div> </li> <li class="phpwebsoft-article-item"> <a href="http://www.phpwebsoft.com/news/188.html" class="phpwebsoft-article-link">量子计算到底是怎么回事?怎么突然火了?</a> <div class="phpwebsoft-article-meta">2026-06-19</div> </li> <li class="phpwebsoft-article-item"> <a href="http://www.phpwebsoft.com/news/187.html" class="phpwebsoft-article-link">如何在VBox虚拟机中安装VBoxGuestAdditions?</a> <div class="phpwebsoft-article-meta">2026-06-19</div> </li> <li class="phpwebsoft-article-item"> <a href="http://www.phpwebsoft.com/news/193.html" class="phpwebsoft-article-link">Win7文件/文件夹删不掉怎么办?</a> <div class="phpwebsoft-article-meta">2026-06-21</div> </li> <li class="phpwebsoft-article-item"> <a href="http://www.phpwebsoft.com/news/194.html" class="phpwebsoft-article-link">变频器故障码OC3、OLU、OU1、LU等常见问题解析?</a> <div class="phpwebsoft-article-meta">2026-06-21</div> </li> <li class="phpwebsoft-article-item"> <a href="http://www.phpwebsoft.com/news/195.html" class="phpwebsoft-article-link">搞懂这些干电池类型,你才算真正入门!</a> <div class="phpwebsoft-article-meta">2026-06-21</div> </li> <li class="phpwebsoft-article-item"> <a href="http://www.phpwebsoft.com/news/196.html" class="phpwebsoft-article-link">MySQL安装初始化失败怎么办?</a> <div class="phpwebsoft-article-meta">2026-06-21</div> </li> <li class="phpwebsoft-article-item"> <a href="http://www.phpwebsoft.com/news/197.html" class="phpwebsoft-article-link">3个关键词让你的小爱音箱智能下载歌曲:Xiaomusic语音指令实用指南</a> <div class="phpwebsoft-article-meta">2026-06-21</div> </li> </ul> </section> </div> <!-- 右侧边栏 --> <aside class="phpwebsoft-sidebar phpwebsoft-sidebar-right" aria-label="侧边栏"> <!-- 推荐阅读 --> <div class="phpwebsoft-widget"> <h3 class="phpwebsoft-widget-title">推荐阅读</h3> <div class="phpwebsoft-recommend-grid"> <a href="http://www.phpwebsoft.com/news/692.html" class="phpwebsoft-recommend-item"> <div class="phpwebsoft-recommend-thumb"> <img src="http://www.phpwebsoft.com/static/v10/images/article-6.jpg" alt="Python里的round()函数怎么用?"> </div> <div class="phpwebsoft-recommend-title">Python里的round()函数怎么用?</div> </a> <a href="http://www.phpwebsoft.com/news/691.html" class="phpwebsoft-recommend-item"> <div class="phpwebsoft-recommend-thumb"> <img src="http://www.phpwebsoft.com/static/v10/images/article-6.jpg" alt="蔡洁如何从一名学霸成长为TVB最靓花旦?"> </div> <div class="phpwebsoft-recommend-title">蔡洁如何从一名学霸成长为TVB最靓花旦?</div> </a> <a href="http://www.phpwebsoft.com/news/690.html" class="phpwebsoft-recommend-item"> <div class="phpwebsoft-recommend-thumb"> <img src="http://www.phpwebsoft.com/static/v10/images/article-6.jpg" alt="海胆怎么做?七款精致做法让你秒变大厨!"> </div> <div class="phpwebsoft-recommend-title">海胆怎么做?七款精致做法让你秒变大厨!</div> </a> <a href="http://www.phpwebsoft.com/news/689.html" class="phpwebsoft-recommend-item"> <div class="phpwebsoft-recommend-thumb"> <img src="http://www.phpwebsoft.com/static/v10/images/article-6.jpg" alt="CD3E怎么做?揭秘T细胞受体复合物的核心亚基与药物开发逻辑"> </div> <div class="phpwebsoft-recommend-title">CD3E怎么做?揭秘T细胞受体复合物的核心亚基与药物开发逻辑</div> </a> </div> </div> <!-- 最新文章 --> <div class="phpwebsoft-widget"> <h3 class="phpwebsoft-widget-title">最新文章</h3> <ul class="phpwebsoft-article-list"> <li class="phpwebsoft-article-item"> <a href="http://www.phpwebsoft.com/news/692.html" class="phpwebsoft-article-link">Python里的round()函数怎么用?</a> <div class="phpwebsoft-article-meta">2026-07-18</div> </li> <li class="phpwebsoft-article-item"> <a href="http://www.phpwebsoft.com/news/691.html" class="phpwebsoft-article-link">蔡洁如何从一名学霸成长为TVB最靓花旦?</a> <div class="phpwebsoft-article-meta">2026-07-18</div> </li> <li class="phpwebsoft-article-item"> <a href="http://www.phpwebsoft.com/news/690.html" class="phpwebsoft-article-link">海胆怎么做?七款精致做法让你秒变大厨!</a> <div class="phpwebsoft-article-meta">2026-07-18</div> </li> <li class="phpwebsoft-article-item"> <a href="http://www.phpwebsoft.com/news/689.html" class="phpwebsoft-article-link">CD3E怎么做?揭秘T细胞受体复合物的核心亚基与药物开发逻辑</a> <div class="phpwebsoft-article-meta">2026-07-18</div> </li> <li class="phpwebsoft-article-item"> <a href="http://www.phpwebsoft.com/news/688.html" class="phpwebsoft-article-link">如何正确理解和使用验证性因素分析的几个关键指标?</a> <div class="phpwebsoft-article-meta">2026-07-18</div> </li> <li class="phpwebsoft-article-item"> <a href="http://www.phpwebsoft.com/news/687.html" class="phpwebsoft-article-link">如何用音乐治愈心灵?——从张宇的《心术》说起</a> <div class="phpwebsoft-article-meta">2026-07-18</div> </li> </ul> </div> <!-- 热门标签 --> <div class="phpwebsoft-widget"> <h3 class="phpwebsoft-widget-title">热门标签</h3> <div class="phpwebsoft-article-tag-list"> <a href="http://www.phpwebsoft.com/tag/192" class="phpwebsoft-article-tag-item">beautifulsoup</a> </div> </div> </aside> </div> </div> </main> <!-- 页脚 --> <footer class="phpwebsoft-footer"> <div class="phpwebsoft-container"> <div class="phpwebsoft-footer-links" style="justify-content: center;"> <a href="http://www.phpwebsoft.com/22.html" class="phpwebsoft-footer-link">免责声明</a> <a href="http://www.phpwebsoft.com/23.html" class="phpwebsoft-footer-link">关于我们</a> <a href="http://www.phpwebsoft.com/24.html" class="phpwebsoft-footer-link">联系我们</a> <a href="http://www.phpwebsoft.com/25.html" class="phpwebsoft-footer-link">投诉删除</a> <a href="http://www.phpwebsoft.com/26.html" class="phpwebsoft-footer-link">投稿须知</a> </div> <div class="phpwebsoft-footer-copyright" style="text-align: center; margin-top: 20px;"> Copyright 2026 websoft网络软件专家 版权所有 <a href="https://beian.miit.gov.cn/" rel="nofollow" target="_blank" style="color: inherit;">黔ICP备2025061481号</a> </div> <div style="text-align: center; margin-top: 10px; font-size: 12px; color: #999;">免责声明:本站信息来源于网络,仅供学习使用,版权归原作者所有,如有不愿意被转载的情况,请联系QQ:182111886,通知我们删除已转载的信息。</div> </div> </footer> <!-- 返回顶部按钮 --> <button class="phpwebsoft-back-to-top" id="backToTop" aria-label="返回顶部">⇧</button> <!-- 公共脚本 --> <script src="http://www.phpwebsoft.com/static/v10/js/common.js"></script> <div class="hide"> </div> </body> </html>