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

如何用Selenium提取网页空格分隔行数据并转Excel列?

解决方法:抓取空格分隔数据并导入Excel转列

我来帮你一步步搞定这个需求,结合你给出的代码片段,咱们完善并实现整个流程:

1. 抓取目标行的空格分隔数据

你已经定位到了表格和行,接下来需要精准获取到包含空格分隔内容的文本,再拆分数据。假设你要处理的是每行里的特定单元格(比如第一个单元格),可以这样完善代码:

WebElement table = driver.findElement(By.xpath(".//*[@id='schemeGridHolder']/div/div[6]/div/table"));
List<WebElement> rows = table.findElements(By.tagName("tr"));
List<String[]> allSplitData = new ArrayList<>(); // 存储所有行拆分后的数据

// 遍历每一行,拆分空格分隔的内容
for (WebElement row : rows) {
    // 获取目标单元格的文本(这里以第一个单元格为例)
    List<WebElement> cells = row.findElements(By.tagName("td"));
    if (!cells.isEmpty()) {
        String cellText = cells.get(0).getText().trim();
        // 用正则匹配一个或多个空格拆分,避免多个空格导致空元素
        String[] splitData = cellText.split("\\s+");
        allSplitData.add(splitData);
    }
}

// 把拆分好的数据导入Excel
exportToExcel(allSplitData);

如果是整行的文本都是空格分隔的,直接替换成row.getText().trim().split("\\s+")即可。

2. 导入Excel并转换为列

这里用常用的Apache POI库来实现Excel写入,先确保你的项目引入了依赖(Maven为例):

<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>5.2.5</version>
</dependency>
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>5.2.5</version>
</dependency>

然后编写导出方法,把拆分后的数组按行-列的格式写入Excel:

import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import java.io.FileOutputStream;
import java.io.IOException;
import java.util.List;

public void exportToExcel(List<String[]> allSplitData) {
    // 创建工作簿和工作表
    Workbook workbook = new XSSFWorkbook();
    Sheet sheet = workbook.createSheet("拆分后的数据");
    
    // 遍历所有拆分后的数据,每行对应Excel的一行,每个元素对应一列
    for (int rowNum = 0; rowNum < allSplitData.size(); rowNum++) {
        String[] rowData = allSplitData.get(rowNum);
        Row excelRow = sheet.createRow(rowNum);
        
        for (int colNum = 0; colNum < rowData.length; colNum++) {
            Cell cell = excelRow.createCell(colNum);
            cell.setCellValue(rowData[colNum]);
        }
    }
    
    // 自动调整列宽,优化显示
    for (int i = 0; i < allSplitData.get(0).length; i++) {
        sheet.autoSizeColumn(i);
    }
    
    // 写入本地文件
    try (FileOutputStream fos = new FileOutputStream("拆分数据.xlsx")) {
        workbook.write(fos);
        System.out.println("Excel文件已成功生成!");
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        try {
            workbook.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

小提示

  • 如果遇到特殊空白字符(比如制表符、换行符),可以把拆分正则改成split("[\\s\\t\\n]+"),兼容更多空白类型。
  • 如果担心拆分出空字符串,可以在拆分后加个过滤,比如用Arrays.stream(splitData).filter(s -> !s.isEmpty()).toArray(String[]::new)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 04:23:55