我在使用BeautifulSoup Select 文本时遇到问题.我试图只从<span class= "data">中获取文本,但我也在其他元素中不断获得结果.例如,在下面的代码中,我想要的单词是"Playstation 3"和"Game Boy Advance",而不是"PC",你能帮忙吗?

汤:

<span class="data">
                  PlayStation 3
                 </span>,
 <span class="data">
                  Game Boy Advance
                 </span>,
 <span class="data">
                  Dec 8, 2022
                 </span>,
 <span class="data">
 <a href="/game/pc">
                   PC
                  </a>

P、 我在下面试过这个

console = soup.select('span.data')
for console in console:
    print(console.get_text(strip = True))

输出代码段:

PlayStation 3
Game Boy Advance
Dec 8, 2022
PC

谢谢

推荐答案

此示例将 Select 所有<span class="data">个内部没有任何其他标记的对象:

from bs4 import BeautifulSoup

html_doc = """\
<span class="data">
                  PlayStation 3
                 </span>,
 <span class="data">
                  Game Boy Advance
                 </span>,
 <span class="data">
                  Dec 8, 2022
                 </span>,
 <span class="data">
 <a href="/game/pc">
                   PC
                  </a>
"""

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

for span in soup.select("span.data:not(:has(*))"):
    print(span.get_text(strip=True))

打印:

PlayStation 3
Game Boy Advance
Dec 8, 2022

Python-3.x相关问答推荐

类型的可变性对变量的作用域有影响吗?

切片时是否在NumPy ND数组中创建新对象?

regexp多重前瞻行为的解释

无法使用xpath关闭selenium中的弹出窗口

如何计算累积几何平均数?

错误:无法为 pyconcorde 构建轮子,这是安装基于 pyproject.toml 的项目所必需的

Sunburst 折线图可视化

有没有办法使用重采样矢量化添加缺失的月份?

SMTP 库 Python3:不太安全的应用程序访问

Python defaultdict 在获取时返回 None,尽管使用默认值初始化

是否将dict转换为一个数据帧,每个值都有重复的键?

Await Future 来自 Executor:Future 不能在await表达式中使用

合并两个numpy数组

运行 PyCharm 测试时如何解决django.core.exceptions.ImproperlyConfigured:找不到 GDAL 库?

Python 3.9.8 使用 Black 并导入 `typed_ast.ast3` 失败

发送Electron邮件时的 MIMEText UTF-8 编码问题

为什么`multiprocessing.Queue.get`这么慢?

如何使用 python 库连接到 poloniex.com websocket api

pdfminer python 3.5

如何在 Python 3.4 中使用 pip 3?