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

如何利用Puppeteer实现表单自动化填充并从CSV文件提取特定字段值

解决方案:CSV/Excel读取、Puppeteer表单填充与JSON字段提取

1. 如何将CSV/Excel文件中的数据读取到代码中?

处理CSV文件

你已经在用的convert-csv-to-json库就很实用,除此之外,也可以试试更轻量的csv-parser库,用法如下:

const fs = require('fs');
const csv = require('csv-parser');

const results = [];
fs.createReadStream('Book1.csv')
  .pipe(csv())
  .on('data', (data) => results.push(data))
  .on('end', () => {
    console.log(results); // 输出转换后的JSON数组
  });

处理Excel文件

如果要读取.xlsx或.xls格式的Excel文件,推荐用xlsx库:

  1. 先安装依赖:npm install xlsx
  2. 读取示例代码:
const XLSX = require('xlsx');

const workbook = XLSX.readFile('Book1.xlsx');
const sheetName = workbook.SheetNames[0];
const worksheet = workbook.Sheets[sheetName];
const jsonData = XLSX.utils.sheet_to_json(worksheet);

console.log(jsonData); // 输出Excel转换后的JSON数组

2. 使用Puppeteer从CSV获取数据填充指定表单

结合你已经实现的CSV转JSON逻辑,这里给你一套完整的自动化填充代码。先确保已经安装puppeteer:npm install puppeteer

完整代码如下:

const csvToJson = require('convert-csv-to-json');
const puppeteer = require('puppeteer');

(async () => {
  // 1. 读取CSV并转成JSON格式
  const jsonData = csvToJson.getJsonFromCsv("Book1.csv");
  
  // 2. 启动Puppeteer浏览器(headless:false可以看到可视化操作)
  const browser = await puppeteer.launch({ headless: false });
  const page = await browser.newPage();
  
  // 3. 循环处理每一条数据
  for (const item of jsonData) {
    await page.goto('https://forms.gle/UUQUgTm9tpmrGSnF8');
    
    // 等待表单加载完成,定位输入框并填充数据
    await page.waitForSelector('input[type="text"]');
    
    // 填充各个字段(注意:选择器是基于Google表单的aria-label属性,若表单更新需调整)
    await page.type('div[aria-label="FirstName"] input', item.FirstName);
    await page.type('div[aria-label="Number"] input', item.Number);
    await page.type('div[aria-label="Address"] input', item.Address);
    await page.type('div[aria-label="Country"] input', item.Country);
    
    // 提交表单
    await page.click('div[role="button"][aria-label="提交"]');
    
    // 等待提交跳转完成
    await page.waitForNavigation();
  }
  
  // 关闭浏览器
  await browser.close();
})();

小提示:如果Google表单的选择器发生变化,你可以按F12打开开发者工具,直接查看输入框的aria-label属性来调整选择器。

3. 从转换后的JSON中提取特定字段值

你已经得到了{ FirstName: 'meliz', Number: '123', Address: 'High Road', Country: 'US' }这样的对象,提取字段超级简单,直接用点语法或者方括号语法就行:

比如在你的循环里可以这么写:

const csvToJson = require('convert-csv-to-json')
const json = csvToJson.getJsonFromCsv("Book1.csv");
for(let i=0; i<json.length;i++){
  // 用点语法提取FirstName
  const firstName = json[i].FirstName;
  // 用方括号语法提取Number(适合字段名带特殊字符的情况)
  const number = json[i]['Number'];
  
  console.log(`当前用户:${firstName},联系方式:${number}`);
}

这样就能轻松拿到你需要的字段值啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 19:33:09