You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

使用Beautiful Soup抓取格式不规范标签中文本的问题求助

解决BeautifulSoup提取
间及加粗标签文本的问题

嘿,我看你现在的问题是只拿到了<br>标签对象,没提取到想要的文本内容对吧?这是因为findAll("br")返回的是页面里所有<br>标签的列表,不是它们之间的文本内容。咱们换个思路来处理:

方法1:利用get_text()快速提取并分割

BeautifulSoup的get_text()方法可以指定分隔符,直接把<br>这类分隔元素替换成换行,同时自动提取所有子标签(比如<b>)里的文本:

# 先拿到目标div
judge_record = judge_soup.find("div", {"class": "field__item even"})
# 用换行作为分隔符提取所有文本,同时去除首尾空白
full_text = judge_record.get_text(separator='\n', strip=True)
# 拆分并过滤空行,得到所有有效文本行
text_lines = [line for line in full_text.split('\n') if line]

这样text_lines里就会包含所有<br>之间的内容,以及加粗标签里的文本了。

方法2:遍历子节点精准收集

如果你需要更精细的控制,可以直接遍历目标div的子节点,跳过<br>标签,收集所有非空文本:

judge_record = judge_soup.find("div", {"class": "field__item even"})
text_content = []
for child in judge_record.children:
    # 跳过<br>标签
    if child.name == 'br':
        continue
    # 提取当前节点的文本(包括<b>这类子标签的文本),并去除空白
    current_text = child.get_text(strip=True)
    # 只添加非空的文本内容
    if current_text:
        text_content.append(current_text)

这种方法能更灵活地处理节点,比如遇到特殊标签时可以单独处理。

这两种方法都能帮你拿到想要的文本内容,你可以根据实际页面结构选更合适的一种~

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

火山引擎 最新活动