2017-08-01 9 views
0

私はテーブルからデータを抽出するのに問題はありませんが、他のタイプのために抽出されたものを書くのは好きではありません。この問題を回避してギャップのないリストを作成する方法についての提案はありますか?私は正直にこれを解決する方法がわかりません。おそらく私はそれを思慮深く考えているか、またはじめて始める必要があるかもしれません。行間に隙間のないリストをExcelに抽出するにはどうすればよいですか?

スクリーンショットおよび以下のコード:

[![スクリーンショット] [1] [1]

package WebScrapper; 

import java.io.PrintWriter; 
import java.net.URLEncoder; 

import java.util.*; 
import java.lang.*; 
import java.io.*; 

import org.apache.poi.xssf.streaming.SXSSFCell; 
import org.apache.poi.xssf.streaming.SXSSFRow; 
import org.apache.poi.xssf.streaming.SXSSFSheet; 
import org.apache.poi.xssf.streaming.SXSSFWorkbook; 
import org.apache.poi.xssf.usermodel.XSSFCell; 
import org.apache.poi.xssf.usermodel.XSSFRow; 
import org.apache.poi.xssf.usermodel.XSSFSheet; 
import org.apache.poi.xssf.usermodel.XSSFWorkbook; 
import org.openqa.selenium.By; 
import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.WebElement; 
import org.openqa.selenium.firefox.FirefoxDriver; 

import java.io.File; 
import java.io.FileNotFoundException; 
import java.io.FileOutputStream; 
import java.io.IOException; 
import java.util.Iterator; 
import java.util.List; 




import org.openqa.selenium.By; 
import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.WebElement; 
import org.openqa.selenium.firefox.FirefoxDriver; 
import org.testng.annotations.Test; 
import org.apache.poi.hssf.usermodel.HSSFCell; 
import org.apache.poi.hssf.usermodel.HSSFRow; 
import org.apache.poi.hssf.usermodel.HSSFSheet; 
import org.apache.poi.hssf.usermodel.HSSFWorkbook; 

import java.io.File; 
import java.io.FileNotFoundException; 
import java.io.FileOutputStream; 
import java.io.IOException; 
import java.util.Iterator; 
import java.util.List; 




import org.openqa.selenium.By; 
import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.WebElement; 
import org.openqa.selenium.firefox.FirefoxDriver; 
import org.testng.annotations.Test; 
import org.apache.poi.hssf.usermodel.HSSFCell; 
import org.apache.poi.hssf.usermodel.HSSFRow; 
import org.apache.poi.hssf.usermodel.HSSFSheet; 
import org.apache.poi.hssf.usermodel.HSSFWorkbook; 
import junit.framework.Assert; 
import org.apache.poi.ss.usermodel.Cell; 
import org.apache.poi.ss.usermodel.Row; 
import org.apache.poi.ss.usermodel.Sheet; 
import org.apache.poi.ss.usermodel.Workbook; 
import org.apache.poi.ss.util.CellReference; 
import org.apache.poi.xssf.streaming.SXSSFWorkbook; 

public class dads { 

public static void main(String args[]) throws Exception{ 





    SXSSFWorkbook workbook = new SXSSFWorkbook(100); 
    SXSSFSheet sheet = workbook.createSheet("output"); 
    FileOutputStream f = new FileOutputStream("czPA LEASE.xlsx",true); 

    // DRIVER 
    WebDriver driver=new FirefoxDriver(); 
    driver.get("https://en.wikipedia.org/wiki/List_of_Death_Note_episodes"); 

    List<WebElement> Elements=driver.findElements(By.xpath("//table//tbody//td//i")); 



    int x=-1; 
    int y=3; 
    for(WebElement ele: Elements) 
    { 
     System.out.println(ele.getText()); 
     SXSSFRow dataRow = sheet.createRow((short)++x); 
     SXSSFCell cell=dataRow.createCell(0); 
     cell.setCellType(HSSFCell.CELL_TYPE_STRING); 
     cell.setCellValue(ele.getText()); 
    } 




    List<WebElement> Elements1=driver.findElements(By.xpath("//table//tbody//td")); 

    int x1=-1; 
    int y1=5; 
    for(WebElement ele1: Elements1) 
    { 
     System.out.println(ele1.getText()); 
     SXSSFRow dataRow = sheet.createRow((short)++x1); 
     SXSSFCell cell1=dataRow.createCell(1); 
     cell1.setCellType(HSSFCell.CELL_TYPE_STRING); 
     cell1.setCellValue(ele1.getText()); 
    } 



    try { 
     f.flush(); 
     workbook.write(f); 
     f.close(); 
     System.out.println("Excel written successfully.."); 
     driver.close(); 

    } catch (FileNotFoundException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    } 
} 

答えて

0

次のコードは、感謝ラジャ

public static void main(String args[]) throws Exception{ 
    SXSSFWorkbook workbook = new SXSSFWorkbook(100); 
    SXSSFSheet sheet = workbook.createSheet("output"); 
    FileOutputStream f = new FileOutputStream("GAHzxvv123TESTvvvzxzzadage12.xlsx",true); 

    // DRIVER 

    WebDriver driver=new FirefoxDriver(); 
    driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS); 
    driver.manage().window().maximize(); 
    driver.get("https://en.wikipedia.org/wiki/List_of_Death_Note_episodes"); 
    List<WebElement> Elements=driver.findElements(By.xpath("//table//tbody//td//i")); 
    int x=-1; 
    for(WebElement ele: Elements) 
    { 
     System.out.println(ele.getText()); 
     SXSSFRow dataRow = sheet.createRow((short)++x); 
     SXSSFCell cell=dataRow.createCell(0); 
     cell.setCellType(HSSFCell.CELL_TYPE_STRING); 
     cell.setCellValue(ele.getText()); 
    } 
    try { 
     f.flush(); 
     workbook.write(f); 
     f.close(); 
     System.out.println("Excel written successfully.."); 
     driver.close(); 

    } catch (FileNotFoundException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 
+0

あなたに参考になります。あなたは私に数時間の仕事を保存しました。私はあなたにビールを借りている:D。私が.//td[@class='description ']の後にいて、// td [contains(@ class、' description ')]も同様です。どのようにこれらを取得し、ギャップがないことを確認しますか?私はちょうどあなたが他の2つの要素のために何をやったかを試してみましたが、それは良いコードではないと想像し、エラーを出します:O –

+0

今はエラーが出ません。どのくらい奇数 –

+0

私は1つの列を得ることができます質問にこのコードを入れている。あなたが望むなら、それに答えることを選ぶことができます。私はいくつかの掘削を行い、私はそれを見つけることができると思います。もう一度あなたの助けに感謝:) –

関連する問題