Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 删除CSV中的空行_Java_Selenium_Opencsv - Fatal编程技术网

Java 删除CSV中的空行

Java 删除CSV中的空行,java,selenium,opencsv,Java,Selenium,Opencsv,我从网站上抓取数据,并用网站数据生成一个csv文件。我将opencsv jar与selenium jar文件一起用于我的程序。正在生成CSV文件,但在每行之后,将生成一个空行。我曾试图消除同样的问题,但未能做到。这是我的密码:- package automation; import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; import java.io.IOException; import

我从网站上抓取数据,并用网站数据生成一个csv文件。我将opencsv jar与selenium jar文件一起用于我的程序。正在生成CSV文件,但在每行之后,将生成一个空行。我曾试图消除同样的问题,但未能做到。这是我的密码:-

package automation;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.List;



import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;


import com.opencsv.CSVWriter;

import com.opencsv.exceptions.CsvException;
import com.opencsv.exceptions.CsvRequiredFieldEmptyException;
import java.time.ZonedDateTime;

public class RecruitmeentTestApp {

    public static void main(String[] args) throws IOException, CsvException, CsvRequiredFieldEmptyException {

           //WebDriver driver = new FirefoxDriver();
        //Fetching Remote Control driver for Chrome browser
           WebDriver driver = new ChromeDriver();
           driver.get("https://www.premierleague.com/tables/");
           driver.manage().window().maximize();

           //Setting the file name in milliseconds of execution as per requirement
           long miliSec=ZonedDateTime.now().toInstant().toEpochMilli();
           File file = new File(miliSec+ ".csv") ;



           WebElement table=driver.findElement(By.xpath("//table"));
           List<WebElement> rowsList = table.findElements(By.tagName("tr"));
           //List<WebElement> headerList=rowsList.get(0).findElements(By.xpath(".//th"));

           List<WebElement> columnsList = null;

           BufferedWriter writer = new BufferedWriter(new FileWriter(file));

           CSVWriter csvWriter = new CSVWriter(writer,
                                CSVWriter.DEFAULT_SEPARATOR,
                                CSVWriter.NO_QUOTE_CHARACTER,
                                CSVWriter.DEFAULT_ESCAPE_CHARACTER,
                                CSVWriter.DEFAULT_LINE_END);

           //As the table is static so creating headerRecord and writing it to csv file

           String[] headerRecord = {"More","Postion", "Club", "Played", "Won","Drawn","Lost","GF","GA","GD","Points","Next"};
           csvWriter.writeNext(headerRecord);


           for (WebElement row : rowsList) {
                  System.out.println();
                  columnsList = row.findElements(By.tagName("td"));
                  String[]colText=new String[columnsList.size()];
                  int i=0;
                  for(WebElement column: columnsList) {

                      colText[i]=column.getText();
                      i++;

                  }
                 //writing the output to csv file

                 csvWriter.writeNext(colText);


                       }

                   //Closing the stream
                   csvWriter.close();




}

}
包装自动化;
导入java.io.BufferedWriter;
导入java.io.File;
导入java.io.FileWriter;
导入java.io.IOException;
导入java.util.List;
导入org.openqa.selenium.By;
导入org.openqa.selenium.WebDriver;
导入org.openqa.selenium.WebElement;
导入org.openqa.selenium.chrome.ChromeDriver;
导入com.opencsv.CSVWriter;
导入com.opencsv.exceptions.csveexception;
导入com.opencsv.exceptions.CsvRequiredFieldEmptyException;
导入java.time.ZonedDateTime;
公共类招聘会议测试PP{
公共静态void main(字符串[]args)引发IOException、CSVEException、CsvRequiredFieldEmptyException{
//WebDriver=newfirefoxdriver();
//获取Chrome浏览器的远程控制驱动程序
WebDriver驱动程序=新的ChromeDriver();
驱动程序。获取(“https://www.premierleague.com/tables/");
driver.manage().window().maximize();
//根据需要设置文件名(以毫秒为单位)
long miliSec=ZonedDateTime.now().toInstant().toEpochMilli();
文件文件=新文件(miliSec+“.csv”);
WebElement table=driver.findElement(By.xpath(“//table”);
列表行列表=table.findElements(按.tagName(“tr”);
//List headerList=rowsList.get(0.findElements)(By.xpath(“../th”);
列表列列表=null;
BufferedWriter writer=新的BufferedWriter(新文件编写器(文件));
CSVWriter CSVWriter=新的CSVWriter(编写器,
CSVWriter.DEFAULT_分隔符,
CSVWriter.NO_QUOTE_字符,
CSVWriter.DEFAULT\u转义\u字符,
CSVWriter.DEFAULT\u LINE\u END);
//由于表格是静态的,所以创建headerRecord并将其写入csv文件
String[]headerRecord={“更多”,“职位”,“俱乐部”,“玩”,“赢”,“平局”,“输”,“GF”,“GA”,“GD”,“积分”,“下一个”};
csvWriter.writeNext(headerRecord);
用于(WebElement行:行列表){
System.out.println();
columnsList=row.findElements(按.tagName(“td”));
String[]colText=新字符串[columnsList.size()];
int i=0;
for(WebElement列:columnsList){
colText[i]=column.getText();
i++;
}
//将输出写入csv文件
csvWriter.writeNext(colText);
}
//关闭小溪
csvWriter.close();
}
}
在的HTML中,在每个可见的tr之后都有一个隐藏的折叠tr(具有colspan='13')


1.
0
0
0
0
0
0
0
0
曼彻斯特城
下一场比赛-2018年8月11日星期六
性能图
因此,跳过添加所有具有属性colspan='13'的备用tr,这将导致添加到csv文件的空行

在的HTML中,在每个可见的tr之后都有一个隐藏的折叠tr(具有colspan='13')


1.
0
0
0
0
0
0
0
0
曼彻斯特城
下一场比赛-2018年8月11日星期六
性能图

因此,跳过添加所有具有属性colspan='13'的备用tr,这将导致添加到csv文件的空行

一,。正确格式化代码。2. <代码>CSVWriter。默认的\u行\u端可能与实际的行端1不匹配。正确格式化代码。2. <代码>CSVWriter。默认的线端可能与实际的线端不匹配
<tr class="tableDark" data-compseason="210" data-filtered-entry-size="20" data-filtered-table-row="1" data-filtered-table-row-name="Arsenal" data-filtered-table-row-opta="t3" data-filtered-table-row-abbr="1">

   <td class="revealMore" style="display: table-cell;" tabindex="0" role="button">
       <div class="icn chevron-down-g"></div>
   </td>
    <td class="pos" tabindex="0">
        <span class="value">1</span>
    </td>
    <td class="team" scope="row">
        <a href="/clubs/1/Arsenal/overview"><span class="badge-25 t3"></span> <span class="long">Arsenal</span><span class="short">ARS</span></a>
    </td>
    <td>0</td>
    <td>0</td>
    <td>0</td>
    <td>0</td>
    <td class="hideSmall">0</td>
    <td class="hideSmall">0</td>
    <td> 
    0

</td>
    <td class="points">0</td>

<td class="nextMatchCol hideMed">
        <span tabindex="0" class="button-tooltip" id="Tooltip">
            <span class="nextMatch"><span class="badge-20 t43"><span class="visuallyHidden">Manchester City</span></span></span>
            <a href="/match/38308" class="tooltipContainer linkable tooltip-link tooltip-right" role="tooltip">
                <span class="tooltip-content">
                    <div class="matchAbridged">
                            <span class="matchInfo">Saturday 11 August 2018</span>
<span class="teamName"><abbr title="Arsenal">ARS</abbr></span>
<span class="badge-20 t3"></span>
<time>15:00</time>
<span class="badge-20 t43"></span>
<span class="teamName"><abbr title="Manchester City">MCI</abbr></span>
<span class="icn arrow-right"></span>

                    </div>
                </span>
            </a>
        </span>
</td>
</tr>
<tr class="expandable" data-filtered-table-row-expander="1">
    <td colspan="13">
        <a href="/clubs/1/Arsenal/overview" class="expandableTeam">
            <span class="badge-50 t3"></span>
            <span class="teamName">Arsenal</span>
        </a>
        <div class="expandableFixtures">
                <div class="resultWidget">
                    <div class="label"><strong>Next Fixture</strong> - Saturday 11 August 2018</div>
                    <a href="/match/38308" class="matchAbridged pre">
<span class="teamName"><abbr title="Arsenal">ARS</abbr></span>
<span class="badge-20 t3"></span>
<time>15:00</time>
<span class="badge-20 t43"></span>
<span class="teamName"><abbr title="Manchester City">MCI</abbr></span>
<span class="icn arrow-right"></span>
                    </a>
                </div>
            <div class="btnContainer">
                <a href="/clubs/1/Arsenal/overview" class="btn-highlight" role="btn">Visit <span class="visuallyHidden">Arsenal </span>Club Page<span class="icn arrow-right-w"></span></a>
            </div>
        </div>
        <div class="teamPerformanceStandingsArea" style="display:none;">
            <header>
                <h3 class="subHeader left">Performance Chart</h3>
                <a href="/stats/comparison" class="btn right">Compare against another team<span class="icn arrow-right"></span></a>
            </header>
            <div class="teamPerformanceStandingsContainer"></div>
        </div>
    </td>
</tr>