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

使用BS4提取网页邮政编码:如何移除span标签保留邮编

解决BS4提取邮政编码的问题

嘿,我来帮你搞定这个问题!从span标签里提取纯邮政编码其实不难,主要分两种场景处理,我给你一步步讲清楚:

场景1:span标签内只有邮政编码

如果你的span结构很简单,比如<span>100001</span>,直接提取文本就能拿到目标内容:

from bs4 import BeautifulSoup

# 假设你已经爬取得到soup对象,以及目标span列表
span_list = soup.find_all('span', class_='your-postcode-class')  # 替换成你实际用的选择器

# 收集邮政编码列表
postcode_list = []
for span in span_list:
    # 提取文本并去除前后多余空格
    postcode = span.text.strip()
    postcode_list.append(postcode)

print(postcode_list)

嫌代码长?用列表推导式更简洁:

postcode_list = [span.text.strip() for span in span_list]

场景2:span标签内混合了其他文本

如果span里还有额外内容,比如<span>所在地邮编:100001</span>或者<span>Postcode: SW1A 1AA</span>,这时候需要用正则匹配出符合邮编格式的内容:

from bs4 import BeautifulSoup
import re

span_list = soup.find_all('span', class_='your-postcode-class')

postcode_list = []
# 这里以中国6位数字邮编为例,爬其他国家的邮编就修改正则
# 比如英国邮编可用:r'\b[A-Z]{1,2}[0-9][A-Z0-9]? [0-9][A-Z]{2}\b'
postcode_pattern = re.compile(r'\b\d{6}\b')

for span in span_list:
    text = span.text.strip()
    # 查找匹配的邮政编码
    match_result = postcode_pattern.search(text)
    if match_result:
        postcode_list.append(match_result.group())

print(postcode_list)

小提醒

  • 如果span里嵌套了子标签(比如<span><em>邮编:</em>100001</span>),span.text依然能提取到完整文本,正则匹配不受影响。
  • 一定要根据目标网站的邮编格式调整正则表达式,保证匹配精准度。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:35:17