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

使用Selenium与Python抓取网页地址并拆分结构化数据的方法

高效拆分店铺地址并构建结构化表格的解决方案

嘿,针对你用Selenium抓取动态页面店铺列表后,想要拆分出名称、街道、邮编等字段并做成表格的需求,我给你整理了一套实用的方案,用Python 3.x就能轻松实现:

核心思路

  1. 定位单个店铺元素块:先把页面上所有店铺的独立容器(比如<div class="shop-item">这类)抓取下来,确保每个容器包含该店铺的所有信息。
  2. 提取并拆分字段:对每个店铺容器,用Selenium的元素定位方法提取名称、原始地址文本,再通过字符串处理或正则表达式拆分出街道、邮编、城市等。
  3. 构建结构化数据并导出表格:把所有店铺的字段数据存入列表字典,再用pandas转换成DataFrame,方便导出成CSV/Excel表格。

完整代码示例

假设页面上每个店铺的容器是<div class="shop-card">(你需要根据实际页面的HTML结构调整选择器),代码如下:

from selenium import webdriver
from selenium.webdriver.common.by import By
import pandas as pd
import re

# 初始化浏览器
browser = webdriver.Chrome(executable_path="E:/Dysk Google/Dokumenty/chromedriver")
browser.get("http://hilding.pl/mater...")  # 替换成完整的目标URL

# 存储所有店铺数据的列表
shop_data = []

# 定位所有店铺容器(请根据实际页面调整CSS选择器)
shop_containers = browser.find_elements(By.CSS_SELECTOR, ".shop-card")

for container in shop_containers:
    try:
        # 提取店铺名称(假设名称在h2标签里,调整选择器)
        shop_name = container.find_element(By.TAG_NAME, "h2").text.strip()
        
        # 提取原始地址文本(假设地址在class为"address"的p标签里)
        raw_address = container.find_element(By.CSS_SELECTOR, ".address").text.strip()
        
        # 拆分地址:用正则提取邮编(假设是波兰的5位数字邮编,格式如00-000)
        zip_code_match = re.search(r"\d{2}-\d{3}", raw_address)
        zip_code = zip_code_match.group() if zip_code_match else "无"
        
        # 拆分街道和城市:假设地址格式是"街道名称, 邮编 城市"
        # 先去掉邮编部分,再拆分街道和城市
        address_without_zip = raw_address.replace(zip_code, "").strip()
        if ", " in address_without_zip:
            street, city = address_without_zip.split(", ", 1)
        else:
            street = address_without_zip
            city = "无"
        
        # 将当前店铺数据加入列表
        shop_data.append({
            "店铺名称": shop_name,
            "街道": street,
            "邮编": zip_code,
            "城市": city
        })
    except Exception as e:
        print(f"处理某店铺时出错: {str(e)}")
        continue

# 关闭浏览器
browser.quit()

# 转换成DataFrame并导出成CSV表格
df = pd.DataFrame(shop_data)
df.to_csv("店铺地址列表.csv", encoding="utf-8-sig", index=False)
print("表格已成功导出为 店铺地址列表.csv")

关键注意事项

  • 选择器调整:你必须根据目标网页的实际HTML结构,修改shop_containers、shop_name、raw_address的定位选择器(可以用浏览器的开发者工具查看元素)。
  • 地址格式兼容:如果不同店铺的地址格式差异大,可能需要调整正则表达式或字符串拆分逻辑,比如有些地址是"邮编 城市, 街道",就需要换拆分顺序。
  • 异常处理:加入try-except可以避免单个店铺数据提取失败导致整个程序崩溃,还能打印错误信息方便排查。
  • 依赖安装:如果没装pandas,需要先运行pip install pandas安装。

这样处理后,你就能得到一个结构清晰的表格,后续不管是分析还是导入其他工具都很方便!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:41:04