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

使用Scrapy提取表格全部文本元素时部分值为换行符如何解决

Scrapy提取文本出现空白换行符的解决方法

你遇到的\n是页面dt、dd标签之间的空白文本节点,以及标签内部的换行符。首先注意Scrapy中匹配文本节点的正确写法是::text而非:text,其次直接使用文本选择器会把所有独立的文本节点单独返回,因此会混入大量无意义的空白值,同时如果标签内部有嵌套元素,还可能出现文本提取不完整的问题。

推荐解决方法

方法1:简单过滤空白(适合结构简单、无嵌套标签的场景)

直接对提取到的文本做去空白过滤,过滤后再做键值配对:

# 提取键并过滤空值
keys = [k.strip() for k in response.css('dt::text').getall() if k.strip()]
# 提取值并过滤空值
vals = [v.strip() for v in response.css('dd::text').getall() if v.strip()]
# 生成结果字典
data = dict(zip(keys, vals))

方法2:XPath+normalize-space(更稳妥,适配有嵌套标签的场景)

使用XPath的normalize-space()函数自动处理所有空白、换行,同时直接提取节点完整文本,避免键值匹配错位:

data = {}
# 遍历所有dt节点
for dt in response.xpath('//dl/dt'):
    key = dt.xpath('normalize-space(.)').get()
    if not key:
        continue
    # 取当前dt后第一个dd节点的完整文本
    val = dt.xpath('./following-sibling::dd[1]/normalize-space(.)').get()
    data[key] = val

两种方法都可以完全消除提取结果中的\n,完整拿到你需要的algorithm、block time等字段的对应值。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 17:27:03