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

Beautiful Soup解析表格列时去除换行符并提取链接文本的方法

问题原因

你之前的写法直接获取整个td元素的文本内容,会将td下所有子元素的文本连同页面排版生成的换行、制表符、冗余空格全部提取出来,strip()/rstrip()只能清理字符串首尾的空白,无法处理文本中间的连续空白字符,也没法过滤掉无关子元素的空内容。

解决方法

可以先精准定位td内的目标元素再提取文本,同时对提取的文本做全量空白规范化处理,修改后的代码如下:

import re
data = []
table = page.find('table', attrs={'class':'table table-no-border table-hover table-striped keyword_result_table'})
table_body = table.find('tbody')

rows = table_body.find_all('tr')
for row in rows:
    cols = row.find_all('td')
    processed_cols = []
    for ele in cols:
        # 针对关键词列,优先提取a标签的文本
        a_tag = ele.find('a')
        if a_tag:
            raw_text = a_tag.get_text()
        else:
            raw_text = ele.get_text()
        # 把所有连续的空白(换行、制表符、空格)替换成单个空格,再去首尾空
        clean_text = re.sub(r'\s+', ' ', raw_text).strip()
        if clean_text:
            processed_cols.append(clean_text)
    data.append(processed_cols)

处理后效果

原来的冗余空白内容会被统一整理为:

['what is in house paint', '5756', '979', '2', 'Great', '89', '.com .net .org']

如果你需要把域名拆成单独的列表项,在清理完空白后用split()方法拆分即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 13:45:03