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

如何使用BeautifulSoup从指定HTML文本中提取地址信息?

解决BeautifulSoup无法提取地址的问题

下面针对不同常见的HTML地址结构,给出对应的提取方案,确保能输出你需要的Address : 183 Pelham Wood Dr, Rock Hill, SC 29732.格式。

情况1:地址是单个标签内的完整文本

如果地址直接放在一个单独的标签里(比如带特定class的<p>或<div>),直接提取文本即可:

示例HTML:

<p class="full-address">183 Pelham Wood Dr, Rock Hill, SC 29732</p>

对应Python代码:

from bs4 import BeautifulSoup

html = '''
<p class="full-address">183 Pelham Wood Dr, Rock Hill, SC 29732</p>
'''
soup = BeautifulSoup(html, 'html.parser')
# 定位到包含地址的标签
address_tag = soup.find('p', class_='full-address')
if address_tag:
    # 提取并清理文本(去掉多余空格换行)
    clean_address = address_tag.get_text(strip=True)
    print(f"Address : {clean_address}.")
else:
    print("未找到地址元素")

情况2:地址分散在多个子标签中

如果地址被拆分成多个子元素(比如街道、城市、州、邮编各占一个标签),需要拼接各部分内容:

示例HTML:

<div class="address-group">
  <span class="street">183 Pelham Wood Dr</span>, 
  <span class="city">Rock Hill</span>, 
  <span class="state">SC</span> 
  <span class="zip">29732</span>
</div>

对应Python代码:

from bs4 import BeautifulSoup

html = '''
<div class="address-group">
  <span class="street">183 Pelham Wood Dr</span>, 
  <span class="city">Rock Hill</span>, 
  <span class="state">SC</span> 
  <span class="zip">29732</span>
</div>
'''
soup = BeautifulSoup(html, 'html.parser')
address_container = soup.find('div', class_='address-group')
if address_container:
    # 提取所有子span的文本并清理
    parts = [tag.get_text(strip=True) for tag in address_container.find_all('span')]
    # 按要求格式拼接
    full_address = f"{parts[0]}, {parts[1]}, {parts[2]} {parts[3]}"
    print(f"Address : {full_address}.")
else:
    print("未找到地址容器")

情况3:地址使用标准<address>标签

如果页面用了HTML标准的<address>标签,直接定位该标签即可:

示例HTML:

<address>183 Pelham Wood Dr, Rock Hill, SC 29732</address>

对应Python代码:

from bs4 import BeautifulSoup

html = '''
<address>183 Pelham Wood Dr, Rock Hill, SC 29732</address>
'''
soup = BeautifulSoup(html, 'html.parser')
address_tag = soup.find('address')
if address_tag:
    clean_address = address_tag.get_text(strip=True)
    print(f"Address : {clean_address}.")
else:
    print("未找到address标签")

排查要点

  • 检查你用的标签名、class名是否和实际HTML完全一致,注意大小写和拼写
  • 若页面动态加载地址,可能需要用requests-html或Selenium先渲染页面再解析
  • 提取文本时用strip=True可以自动去除多余的空格、换行符

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 08:50:22