使用 Selectolax 选择不含 class 属性的 p 标签

聖光之護
发布: 2025-09-26 17:15:20
原创
360人浏览过

使用 selectolax 选择不含 class 属性的 p 标签

本文介绍了如何使用 Python 的 Selectolax 库选择 HTML 文档中不包含 class 属性的 p 标签及其子元素。通过示例代码,展示了如何利用 CSS 选择器以及 Lexbor 解析器来精准定位目标元素,并提取所需信息。同时,也对比了不同解析器的优劣,帮助开发者选择更合适的工具

在使用 Selectolax 解析 HTML 文档时,经常会遇到需要选择特定属性的元素的情况。本文将重点介绍如何使用 Selectolax 选择不包含 class 属性的 p 标签及其子元素,并提供一些实用的技巧和注意事项。

使用 :not([class]) 选择器

Selectolax 提供了强大的 CSS 选择器支持,可以使用 :not([class]) 伪类来选择不包含 class 属性的元素。例如,要选择所有不包含 class 属性的 span 标签,可以使用以下代码:

from selectolax.parser import HTMLParser

html = '''
    <p class="card_street">
        <span class="card_street">123 My Rd. </span>
        <span class="card_street">Suite 100</span>
        <span> Anywhere</span>
        <span>, TX</span>
        <span> 12345</span>
    </p>
    '''

tree = HTMLParser(html)

for node in tree.css('p[class="card_street"] > span:not([class])'):
    print(node.text())
登录后复制

这段代码首先解析 HTML 字符串,然后使用 tree.css('p[class="card_street"] > span:not([class])') 选择器来选择 class 属性为 card_street 的 p 标签下的所有不包含 class 属性的 span 标签。最后,循环遍历选择到的节点,并打印它们的文本内容。

使用 Lexbor 解析器

钛投标
钛投标

钛投标 | 全年免费 | 不限字数 | AI标书智写工具

钛投标157
查看详情 钛投标

Selectolax 默认使用 Modest 作为后端解析器。但建议使用 Lexbor 作为后端解析器,因为它具有更好的性能和可维护性。要使用 Lexbor 解析器,需要安装 selectolax[lexbor] 包,并使用 LexborHTMLParser 类:

from selectolax.lexbor import LexborHTMLParser

html = '''
    <p class="card_street">
        <span class="card_street">123 My Rd. </span>
        <span class="card_street">Suite 100</span>
        <span> Anywhere</span>
        <span>, TX</span>
        <span> 12345</span>
    </p>
    '''

tree = LexborHTMLParser(html)
result = [element.text(strip=True) for element in tree.css('p[class="card_street"] span:not([class])')]
print(result)
登录后复制

这段代码与前面的示例类似,但使用了 LexborHTMLParser 类来解析 HTML。此外,它还使用了列表推导式来提取所有匹配到的 span 标签的文本内容,并将其存储在一个列表中。strip=True 参数用于去除文本内容中的首尾空格。

注意事项

  • 确保正确安装了 Selectolax 库,并且如果需要使用 Lexbor 解析器,也安装了相应的依赖包。
  • CSS 选择器语法区分大小写,请确保选择器中的属性名称和值与 HTML 文档中的一致。
  • :not([class]) 选择器会选择所有不包含 class 属性的元素,因此在使用时需要谨慎,确保选择器足够精确,以避免选择到不必要的元素。

总结

本文介绍了如何使用 Selectolax 选择不包含 class 属性的 p 标签及其子元素。通过使用 :not([class]) 选择器和 Lexbor 解析器,可以方便地定位和提取目标元素的信息。在实际应用中,可以根据具体的需求调整选择器,以达到最佳的效果。

以上就是使用 Selectolax 选择不含 class 属性的 p 标签的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号