You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python+Selenium提取HTML文本时如何保留换行空格等原结构

Python+Selenium提取HTML文本保留换行空格结构方法

Selenium元素自带的.text属性会默认对文本做归一化处理,自动合并多余空白、忽略部分块级元素的排版间距,没法保留原有的空格、换行结构。要提取整个页面的完整文本且保留格式,用Selenium原生API就能实现,不需要额外引入复杂的解析库,具体方案如下:

优先选:读取innerText属性(最简便)

直接获取页面body节点的innerText属性,返回的文本和你在浏览器里肉眼看到的排版完全一致,会自动保留块级元素的换行、正常的空格间距,还不会提取script、style这类不可见标签里的内容,适配绝大多数场景:

# 注意:新版本Selenium已经废弃了find_element_by_*系列旧API,统一用下面的定位写法
full_page_text = driver.find_element("tag name", "body").get_attribute("innerText")

要严格保留原始文本结构:读取textContent属性

如果需要100%保留HTML源码里写的原始空白、换行(比如<pre>标签里的代码格式、源码中手动写的文本缩进、换行),可以读取html根节点的textContent属性:

full_page_text = driver.find_element("tag name", "html").get_attribute("textContent")

注意:这个属性会把所有DOM节点的文本都拼起来,包括隐藏的script、style标签里的内容,如果不需要这类内容,可以先执行JS删掉对应节点再提取。

需要自定义排版规则:注入JS提取

如果你对换行、空格的保留有自定义要求(比如指定标签末尾加双换行、过滤特定class的广告内容),可以直接在页面上下文里跑自定义的JS逻辑,处理完再把结果返回给Selenium:

extract_script = """
// 先删掉不需要的非内容标签
document.querySelectorAll('script, style, noscript, iframe').forEach(node => node.remove());
// 这里可以按需加自己的排版调整逻辑
return document.body.innerText;
"""
full_page_text = driver.execute_script(extract_script)

内容的提问来源于stack exchange,提问作者fam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 07:24:24