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

如何使用bs4爬取br标签间内容并准确提取企业名称、地址等信息

基于特征匹配的BS4字段提取方案

核心思路

不要依赖br分割后的固定顺序,而是利用每个字段的独有特征做匹配提取,天然兼容地址行数不固定、电话缺失的场景。

具体提取规则

  • 企业名称:两个示例中企业名称均被<b>标签包裹,直接提取blockquote节点下所有<b>标签的文本内容即可,匹配准确率极高。
  • 企业官网:官网为标准HTTP/HTTPS链接,可直接提取blockquote下<a>标签的href属性,也可通过正则匹配文本中以http/https开头的字符串。
  • 联系电话:通过电话号码格式正则匹配,示例中为北美号码格式,可根据实际爬取目标的地区调整正则规则,匹配不到则直接判定为无联系电话。
  • 企业地址:排除已提取的企业名、电话、官网、以及特殊格式备注(如示例1中<i>标签包裹的代理人信息)后,剩余的连续非空文本拼接即为完整地址。

可运行代码示例

from bs4 import BeautifulSoup
import re

def extract_company_info(html_block):
    soup = BeautifulSoup(html_block, 'html.parser')
    blockquote = soup.find('blockquote')
    info = {
        '企业名称': '',
        '企业地址': [],
        '联系电话': '',
        '企业官网': ''
    }
    # 提取企业名
    name_tag = blockquote.find('b')
    if name_tag:
        info['企业名称'] = name_tag.get_text(strip=True)
    # 提取官网
    a_tag = blockquote.find('a', href=re.compile(r'^https?://'))
    if a_tag:
        info['企业官网'] = a_tag['href'].strip()
    # 电话号码正则(可根据实际场景调整,国内手机号可改为r'^1[3-9]\d{9}$')
    phone_pattern = re.compile(r'^\(?\d{3}\)?[-\s]?\d{3}[-\s]?\d{4}$')
    # 提取所有非空文本,过滤空行
    all_texts = list(blockquote.stripped_strings)
    for text in all_texts:
        # 跳过已提取的企业名、官网
        if text == info['企业名称'] or text == info['企业官网']:
            continue
        # 匹配电话
        if phone_pattern.match(text) and not info['联系电话']:
            info['联系电话'] = text
            continue
        # 跳过斜体备注(示例1的代理人信息)
        parent_tag = blockquote.find(string=text).parent
        if parent_tag and parent_tag.name == 'i':
            continue
        # 剩余内容加入地址
        info['企业地址'].append(text)
    # 拼接地址
    info['企业地址'] = '\n'.join(info['企业地址']).strip()
    return info

方案兼容性说明

  • 遇到地址行数变化、电话缺失的场景均可正常识别,不会出现字段错位问题
  • 若爬取目标存在其他格式的备注,新增对应标签/格式的过滤规则即可适配
  • 电话号码正则可根据目标地区灵活调整,适配不同国家地区的号码格式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 18:30:00