기본적으로 웹 사이트에서 데이터를 스크랩하고 .csv 파일을 만드는 Java 응용 프로그램을 만들었습니다. NetBeans에서 실행하고 34kb의 파일을 생성하면 정상적으로 실행됩니다. 그러나 빌드하고 .JAR 실행 파일을 실행하면 동일한 파일이 생성되지만 파일 크기는 4kb이며 모든 데이터를 가져 오지는 않습니다. Java 1.8에서 프로젝트를 빌드합니다. 나는이 문제가 실제로 그 이유가 무엇인지 이해하지 못합니다. Java 버전의 문제입니까? 도움을 주셔서 미리 감사드립니다. 이전에 여기에 코드를 추가하지 않아서 죄송합니다. 여기 내 프로젝트 코드가 있습니다.
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import java.util.Locale;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
//this program is for open-end-summary
/**
*
* @author talha
*/
public class ComMufapScraping {
boolean writeCSVToConsole = true;
boolean writeCSVToFile = true;
boolean sortTheList = true;
boolean writeToConsole;
boolean writeToFile;
public static Document doc = null;
public static Elements tbodyElements = null;
public static Elements elements = null;
public static Elements tdElements = null;
public static Elements trElement2 = null;
public static String Dcomma = ",";
public static String line = "";
public static ArrayList<Elements> sampleList = new ArrayList<Elements>();
public static void createConnection() throws IOException {
System.setProperty("http.proxyHost", "191.1.1.202");
System.setProperty("http.proxyPort", "8080");
String tempUrl = "http://www.mufap.com.pk/nav_returns_performance.php?tab=01";
doc = Jsoup.connect(tempUrl).get();
}
public static void parsingHTML() throws Exception {
for (Element table : doc.getElementsByTag("table")) {
for (Element trElement : table.getElementsByTag("tr")) {
trElement2 = trElement.getElementsByTag("tr");
tdElements = trElement.getElementsByTag("td");
File fold = new File("C:\\open-end-smry.csv");
fold.delete();
File fnew = new File("C:\\open-end-smry.csv");
FileWriter sb = new FileWriter(fnew, true);
if (trElement.hasClass("tab-data1")) {
for (Iterator<Element> it = tdElements.iterator(); it.hasNext();) {
if (it.hasNext()) {
sb.append("\r\n");
}
for (Iterator<Element> it2 = trElement2.iterator(); it.hasNext();) {
Element tdElement2 = it.next();
final String content = tdElement2.text();
if (it2.hasNext()) {
sb.append(formatData(content));
sb.append(" , ");
}
if (!it.hasNext()) {
String content1 = content.replaceAll(",$", " ");
sb.append(formatData(content1));
//it2.next();
}
}
System.out.println(sb.toString());
sb.flush();
sb.close();
}
}
System.out.println(sampleList.add(tdElements));
}
}
}
private static final SimpleDateFormat FORMATTER_MMM_d_yyyy = new SimpleDateFormat("MMM d, yyyy", Locale.US);
private static final SimpleDateFormat FORMATTER_dd_MMM_yyyy = new SimpleDateFormat("dd-MMM-YYYY", Locale.US);
public static String formatData(String text) {
String tmp = null;
try {
Date d = FORMATTER_MMM_d_yyyy.parse(text);
tmp = FORMATTER_dd_MMM_yyyy.format(d);
} catch (ParseException pe) {
tmp = text;
}
return tmp;
}
public static void main(String[] args) throws IOException, Exception {
createConnection();
parsingHTML();
}
}
다음은 프로젝트를 빌드 한 후의 log cat 파일입니다.
\ Users \ talha \ Documents \ NetBeansProjects \ com.open_end_smry \ build \ classes 경고 : [옵션] 부트 스트랩 클래스 경로가 -source 1.7과 함께 설정되지 않았습니다. 경고 컴파일 1 개 : 생성 된 디렉토리 : C : \ Users \ talha \ Documents \ NetBeansProjects \ com.open_end_smry \ dist 파일 1 개를 C : \ Users \ talha \ Documents \ NetBeansProjects \ com.open_end_smry \ build에 복사 라이브러리를 C : \ Users \ talha \ Documents \ NetBeansProjects \ com.open_end_smry \ dist \ lib에 복사합니다. jar 빌드 : C : \ Users \ talha \ Documents \ NetBeansProjects \ com.open_end_smry \ dist \ com.open_end_smry.jar Ant없이 명령 줄에서이 응용 프로그램을 실행하려면 다음을 시도하십시오. java -jar "C : \ Users \ talha \ Documents \ NetBeansProjects \ com.open_end_smry \ dist \ com.open_end_smry.jar "jar : BUILD SUCCESSFUL (총 시간 : 0 초) [옵션] 부트 스트랩 클래스 경로가 -source 1.7과 함께 설정되지 않음 1 경고 컴파일 : 생성 된 dir : C : \ Users \ talha \ Documents \ NetBeansProjects \ com.open_end_smry \ dist 1 개의 파일을 C : \ Users \ talha \ Documents \에 복사 NetBeansProjects \ com.open_end_smry \ build 라이브러리를 C : \ Users \ talha \ Documents \ NetBeansProjects \ com.open_end_smry \ dist \ lib에 복사합니다. jar 빌드 : C : \ Users \ talha \ Documents \ NetBeansProjects \ com.open_end_smry \ dist \ com.open_end_smry.jar Ant없이 명령 줄에서이 응용 프로그램을 실행하려면 다음을 시도하십시오. java -jar "C : \ Users \ talha \ Documents \ NetBeansProjects \ com.open_end_smry \ dist \ com.open_end_smry.jar "jar : BUILD SUCCESSFUL (총 시간 : 0 초) [옵션] 부트 스트랩 클래스 경로가 -source 1.7과 함께 설정되지 않음 1 경고 컴파일 : 생성 된 dir : C : \ Users \ talha \ Documents \ NetBeansProjects \ com.open_end_smry \ dist 1 개의 파일을 C : \ Users \ talha \ Documents \에 복사 NetBeansProjects \ com.open_end_smry \ build 라이브러리를 C : \ Users \ talha \ Documents \ NetBeansProjects \ com.open_end_smry \ dist \ lib에 복사합니다. jar 빌드 : C : \ Users \ talha \ Documents \ NetBeansProjects \ com.open_end_smry \ dist \ com.open_end_smry.jar Ant없이 명령 줄에서이 응용 프로그램을 실행하려면 다음을 시도하십시오. java -jar "C : \ Users \ talha \ Documents \ NetBeansProjects \ com.open_end_smry \ dist \ com.open_end_smry.jar "jar : BUILD SUCCESSFUL (총 시간 : 0 초) open_end_smry \ build 라이브러리를 C : \ Users \ talha \ Documents \ NetBeansProjects \ com.open_end_smry \ dist \ lib에 복사합니다. jar 빌드 : C : \ Users \ talha \ Documents \ NetBeansProjects \ com.open_end_smry \ dist \ com.open_end_smry.jar Ant없이 명령 줄에서이 응용 프로그램을 실행하려면 다음을 시도하십시오. java -jar "C : \ Users \ talha \ Documents \ NetBeansProjects \ com.open_end_smry \ dist \ com.open_end_smry.jar "jar : BUILD SUCCESSFUL (총 시간 : 0 초) open_end_smry \ build 라이브러리를 C : \ Users \ talha \ Documents \ NetBeansProjects \ com.open_end_smry \ dist \ lib에 복사합니다. jar 빌드 : C : \ Users \ talha \ Documents \ NetBeansProjects \ com.open_end_smry \ dist \ com.open_end_smry.jar Ant없이 명령 줄에서이 응용 프로그램을 실행하려면 다음을 시도하십시오. java -jar "C : \ Users \ talha \ Documents \ NetBeansProjects \ com.open_end_smry \ dist \ com.open_end_smry.jar "jar : BUILD SUCCESSFUL (총 시간 : 0 초)
루프 내부에 파일 삭제 기능이 있으므로 모든 루프에서 파일이 삭제됩니다. 이 부분을 루프 외부에 두십시오.
public static void parsingHTML() throws Exception {
File fold = new File("C:\\open-end-smry.csv");
fold.delete();
for (Element table : doc.getElementsByTag("table")) {
for (Element trElement : table.getElementsByTag("tr")) {
trElement2 = trElement.getElementsByTag("tr");
tdElements = trElement.getElementsByTag("td");
File fnew = new File("C:\\open-end-smry.csv");
FileWriter sb = new FileWriter(fnew, true);
if (trElement.hasClass("tab-data1")) {
for (Iterator<Element> it = tdElements.iterator(); it.hasNext();) {
if (it.hasNext()) {
sb.append("\r\n");
}
for (Iterator<Element> it2 = trElement2.iterator(); it.hasNext();) {
Element tdElement2 = it.next();
final String content = tdElement2.text();
if (it2.hasNext()) {
sb.append(formatData(content));
sb.append(" , ");
}
if (!it.hasNext()) {
String content1 = content.replaceAll(",$", " ");
sb.append(formatData(content1));
//it2.next();
}
}
System.out.println(sb.toString());
sb.flush();
sb.close();
}
}
System.out.println(sampleList.add(tdElements));
}
}
}
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다