Playwright & NodeJs - 读取 CSV 并将数据推送到数组

Posted

技术标签:

【中文标题】Playwright & NodeJs - 读取 CSV 并将数据推送到数组【英文标题】:Playwright & NodeJs - Read CSV and push data to an array 【发布时间】:2021-05-25 10:10:12 【问题描述】:

我正在使用 playwright 库进行网络抓取,并且 URL 存储在 CSV 文件中。我正在尝试读取 CSV 文件并选择数组中的 URL 以在抓取代码中使用。

这是我写的代码。

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

// Array to store the URL.
var urls = [];
// This prints an empty array.
console.log(urls);

fs.createReadStream('sample.csv')
  .pipe(csv())
  .on('data', (row) => 
    // Trying push the URL in the array
    urls.push(row);

    // This prints the values of URLs
    console.log(urls);
  )
  .on('end', () => 
    console.log('CSV file successfully processed');
  );
// Here I don't see the URLs but an empty array.
console.log("URLS:" + urls);  

在方法“.on('data'”) 中,值被推送到数组,控制台也在打印这些值,但是,当我尝试从数组中获取 URL 时,执行后它返回一个空数组。

【问题讨论】:

变量名是大写的,你在最后执行 console.log。这就是为什么它是空的。 我尝试了所有方法,但是结果还是一样。还有其他推荐吗? 【参考方案1】:

这个答案是假设你的 CSV 文件中只有链接。

const  test  = require('@playwright/test');
const fs = require("fs");

// Reads the CSV file and saves it  
var links = fs.readFileSync('Path/to/csv')
    .toString() // convert Buffer to string
    .split('\n') // split string to lines
    .map(e => e.trim()) // remove white spaces for each line

// Start of for loop, to loop through csv file
for (const link of links) 
    // Normal test set up for playwright. adding the + link.toString to avoid duplicate test name error
    test('test for ' + link.toString(), async ( page ) => 
        // First csv file item sent to console
        console.log(link);
        // Goes to that csv link item
        await page.goto(link);
        // Do whatever else you need
    );

【讨论】:

您的答案可以通过添加有关代码的作用以及它如何帮助 OP 的更多信息来改进。 已编辑。希望这是足够的信息。谢谢

以上是关于Playwright & NodeJs - 读取 CSV 并将数据推送到数组的主要内容,如果未能解决你的问题,请参考以下文章

实例讲解Playwright

python+playwright 学习-10.pytest-playwright插件编写测试用例

无法安装 playwright:找不到使用 Playwright 的项目。确保项目或解决方案存在于

Playwright入门

使用 Playwright 下载文件

Playwright