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

Python Selenium爬取数据如何拆分字段转为DataFrame格式

问题点
  • 定位XPath写错:目标节点是div标签,不是你写的td,原定位语句无法匹配到正确容器。
  • 直接读取容器的.text属性会自动拼接所有内部文本,不会按字段做结构化拆分,所以得到整段无分隔长文本。
实现代码

不要对整段长文本做字符串拆分,字段值带空格、特殊字符时很容易拆分错误。直接遍历容器内的<strong>标签,逐个匹配字段名和对应的值,稳定性最高。

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

# 保留你原有初始化driver、打开页面的逻辑
# driver = webdriver.Chrome()
# driver.get("目标页面地址")

# 1. 定位正确的信息容器
container = driver.find_element(By.XPATH, "//div[contains(@class,'Building-locate-sorting')]")

# 2. 逐个提取字段和值
record = {}
# 原页面字段名到目标列名的映射
col_mapping = {
    "Building Number": "BuildingNO",
    "Building Name": "BuildingName",
    "Entry Date": "EntryDate",
    "Exit Date": "ExitDate"
}
for strong_ele in container.find_elements(By.XPATH, "./strong"):
    # 提取原始字段名,去掉末尾冒号和空白
    raw_col_name = strong_ele.text.strip().rstrip(":")
    # 提取strong标签后跟随的文本值,用JS取兄弟节点不会漏内容
    col_value = driver.execute_script(
        "return arguments[0].nextSibling.textContent.trim()",
        strong_ele
    )
    # 只保留需要的字段
    if raw_col_name in col_mapping:
        record[col_mapping[raw_col_name]] = col_value

# 3. 转为DataFrame
building_df = pd.DataFrame([record])

# 打印验证结果
print(building_df.to_csv(sep="|", index=False))
# 如需保存为|分隔的文件,取消注释下一行
# building_df.to_csv("building_info.csv", sep="|", index=False)
输出结果

运行后输出完全符合你要求的格式:

BuildingNO|BuildingName|EntryDate|ExitDate
2828285|Staten|07/01/2019|06/30/2022
补充说明
  • 如果你使用4.0版本以前的Selenium,可以把find_element(By.XPATH, 路径)替换为旧写法find_element_by_xpath(路径),功能完全一致。
  • 不要用text.split(":")或者按空格拆分整段文本的方案,一旦建筑名包含空格(比如Staten Garden)、条款里包含特殊符号,拆分逻辑会直接出错,按DOM节点提取的方案不受内容格式影响。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 11:00:58