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

如何将BeautifulSoup find_all获取的多个<b>标签内容合并为单个字符串?

How to Combine Text from Multiple Adjacent Tags with BeautifulSoup

嘿,我来帮你搞定这个问题!你已经通过find_all("b")拿到了目标标签列表,要把它们的文本合并成一个空格分隔的字符串,有两种简洁的方法:

方法1:遍历标签列表拼接文本

你可以遍历每个<b>标签提取文本,再用空格把它们连接起来:

# 基于你已有的company_string变量
company_name = ' '.join([b.get_text(strip=True) for b in company_string])
print(company_name)  # 输出: Company Name Limited
  • b.get_text(strip=True):提取每个<b>标签内的纯文本,同时自动去除文本前后的空白字符(让结果更干净)
  • ' '.join(...):将所有提取到的文本片段用空格拼接成完整字符串

方法2:直接获取父元素的文本(更高效)

观察你的HTML结构,所有<b>标签都嵌套在<a>标签里,你可以直接获取这个<a>标签的文本,利用BeautifulSoup的get_text()参数指定分隔符:

# 直接从container定位到目标a标签并提取文本
company_name = container.find("span", class_="company").a.get_text(strip=True, separator=' ')
print(company_name)  # 输出: Company Name Limited
  • get_text(strip=True, separator=' '):该方法会提取元素下所有子节点的文本,separator=' '指定不同文本节点之间用空格分隔,strip=True去除整体文本首尾的空白

整合到你的爬取代码里

把方法应用到你的现有代码中,完整片段如下:

from urllib.request import urlopen as uReq
from bs4 import BeautifulSoup as soup
import ssl
my_url = 'https://www._________.co.uk/'
context = ssl._create_unverified_context()
uClient = uReq(my_url, context=context)
page_html = uClient.read()
uClient.close()
page_soup = soup(page_html, "html.parser")
containers = page_soup.findAll("div",{"class":"row"})

# 遍历每个container处理数据
for container in containers:
    # 方法1实现
    company_string = container.span.find_all("b")
    company_name = ' '.join([b.get_text(strip=True) for b in company_string])
    print(f"方法1结果: {company_name}")

    # 方法2实现(更推荐,减少标签遍历)
    try:
        company_name_alt = container.find("span", class_="company").a.get_text(strip=True, separator=' ')
        print(f"方法2结果: {company_name_alt}")
    except AttributeError:
        # 处理找不到目标标签的情况,避免报错
        print("未找到公司名称")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:45:50