使用Selenium与Python抓取网页地址并拆分结构化数据的方法
高效拆分店铺地址并构建结构化表格的解决方案
嘿,针对你用Selenium抓取动态页面店铺列表后,想要拆分出名称、街道、邮编等字段并做成表格的需求,我给你整理了一套实用的方案,用Python 3.x就能轻松实现:
核心思路
- 定位单个店铺元素块:先把页面上所有店铺的独立容器(比如
<div class="shop-item">这类)抓取下来,确保每个容器包含该店铺的所有信息。 - 提取并拆分字段:对每个店铺容器,用Selenium的元素定位方法提取名称、原始地址文本,再通过字符串处理或正则表达式拆分出街道、邮编、城市等。
- 构建结构化数据并导出表格:把所有店铺的字段数据存入列表字典,再用
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
相关产品推荐
相关产品推荐

