gpt4 book ai didi

java - JSoup HTML 解析并按顺序将结果写入 CSV

转载 作者:行者123 更新时间:2023-12-02 09:27:02 25 4
gpt4 key购买 nike

我正在尝试找到将 Jsoup 时从 HTML 文档中解析出的数据保存到 CSV 中的最佳方法。我遇到的问题是使用 [CSVWriter][1] - https://mvnrepository.com/artifact/com.opencsv/opencsv/4.6并用它写入数据。请参阅下面我的代码片段。数据的结构如下所示,其中信息框是主要列表记录,其中包含每个后续字段。 CSVWriter 看起来像是一个字符串数组,但在使用字符串数组从元素写入 CSVData 写入器时遇到困难。

Jsoup 选择器从选择中返回一个项目数组。例如,当我选择名称时,如果页面上有 9 条记录,它将返回所有 9 个名称。我需要将这些数据放在一起,以便将每一行打印到 CSV 中。

信息框> 姓名| 邮箱| 电话| 网站

我遇到的问题是我如何尝试在下面的这一行写入数据

writer.writeAll((Iterable<String[]>) infoArray);

这不能正常工作并且有错误,但想展示我的情况以及是否有人熟悉将 Jsoup Elements 中的数据写入 CSV。谢谢

String filePath ="c:/results.csv";
// first create file object for file placed at location
// specified by filepath
File file = new File(filePath);
try {
// create FileWriter object with file as parameter
FileWriter outputfile = new FileWriter(file);

// create CSVWriter object filewriter object as parameter
CSVWriter writer = new CSVWriter(outputfile);

String[] header = { "Name", "Phone", "Street","State","City","Zipcode" };
Elements infobox = doc.select(".info");
List<String> infoArray = new ArrayList<>();

for(int i = 0; i < infobox.size(); i++){

infobox.get(i).select(".business-name > span");

infoArray.add(infobox.get(i).select(".business-name > span").text());
infoArray.add(infobox.get(i).select(".phones.phone.primary").text());
infoArray.add(infobox.get(i).select(".street-address").text());
infoArray.add(infobox.get(i).select(".state").text());
infoArray.add(infobox.get(i).select(".city").text());
infoArray.add(infobox.get(i).select(".zip").text());


}


writer.writeNext(header);
//How to write data in order to match each record accordingly?
//Data should be written to CSV like the following example under each header into each corrosponding row
//name, phone, street
writer.writeAll((Iterable<String[]>) infoArray);
for(String ia : infoArray){


}

// closing writer connection
writer.close();
}
catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

最佳答案

这就是最终对我有用的东西。问题不在于将字符串添加到字符串数组中以传递给 CSVWriter。这是我的例子。

   try {


String[] header = { "Name", "Phone", "Street","State","City","Zipcode" };
Elements infobox = doc.select(".info");

if(count == 0){

writer.writeNext(header);
}

for(int i = 0; i < infobox.size(); i++){



infobox.get(i).select(".business-name > span");

String businessName = infobox.get(i).select(".business-name > span").text();
String phone = infobox.get(i).select(".phones.phone.primary").text();
String address = infobox.get(i).select(".street-address").text();
//Address seems to be displayed another way too
String address2 = infobox.get(i).select(".adr").text();
//Use regular expression to normalize data


String[] columns = new String[]{
businessName, phone, address
};

writer.writeNext(columns);


}

writer.close();
}

关于java - JSoup HTML 解析并按顺序将结果写入 CSV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58271437/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com