웹 크롤링을 통해 수집한 데이터를 관리하고 활용하기 위해서는 적절한 형식으로 저장하는 것이 중요합니다. CSV, JSON, XML 형식으로 저장하여 데이터의 재사용성을 높이고, 파일 I/O를 활용해 데이터를 효율적으로 관리할 수 있습니다. 이번 글에서는 JSoup로 파싱된 데이터를 다양한 포맷으로 저장하는 방법과 이를 통해 다른 프로그램과 연동하는 방법을 설명하겠습니다.
파싱된 데이터를 CSV, JSON, XML로 저장
1. CSV로 저장하기
CSV는 데이터를 행렬 형식으로 저장할 수 있어 간단한 데이터 관리에 유용합니다. Java에서 파싱한 데이터를 FileWriter를 통해 .csv 파일로 작성할 수 있습니다.
import java.io.FileWriter;
import java.io.IOException;
public class CsvExportExample {
public static void main(String[] args) {
try (FileWriter writer = new FileWriter("output.csv")) {
writer.append("이름, 이메일, 전화번호\n"); // 헤더 작성
writer.append("홍길동, hong@example.com, 010-1234-5678\n");
writer.append("김철수, kim@example.com, 010-9876-5432\n");
writer.flush();
} catch (IOException e) {
e.printStackTrace();
}
}
}
위 코드는 output.csv 파일에 데이터를 저장하는 예제입니다. 행마다 데이터를 구분하여 쉽게 추가할 수 있으며, Excel과 같은 소프트웨어에서도 쉽게 불러와서 확인할 수 있습니다. 크롤링한 데이터를 Element에서 추출한 후, FileWriter를 사용해 CSV 형식으로 저장할 수 있습니다.
2. JSON으로 저장하기
JSON 형식은 키-값 쌍으로 이루어져 있어 구조화된 데이터를 저장하기에 적합합니다. JSON을 다루기 위해 Java에서는 org.json.JSONObject 라이브러리를 활용할 수 있습니다.
import org.json.JSONObject;
import java.io.FileWriter;
import java.io.IOException;
public class JsonExportExample {
public static void main(String[] args) {
JSONObject data = new JSONObject();
data.put("name", "홍길동");
data.put("email", "hong@example.com");
data.put("phone", "010-1234-5678");
try (FileWriter file = new FileWriter("output.json")) {
file.write(data.toString(4)); // JSON을 예쁘게 출력 (4-space indent)
file.flush();
} catch (IOException e) {
e.printStackTrace();
}
}
}
JSON은 웹 API와의 연동에 매우 유용한 데이터 포맷입니다. 위 예제는 JSONObject를 사용하여 JSON 형식으로 데이터를 저장하는 방식이며, 들여쓰기된 출력 형식으로 저장할 수 있습니다. 웹에서 가져온 데이터는 JSON 포맷으로 저장하고 웹 애플리케이션과 쉽게 교환할 수 있어 편리합니다.
3. XML로 저장하기
XML은 데이터의 계층 구조를 표현하는 데 유리합니다. Java에서는 XML 작성을 위해 DocumentBuilder와 Transformer 클래스를 사용할 수 있습니다.
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import java.io.File;
public class XmlExportExample {
public static void main(String[] args) {
try {
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.newDocument();
// Root Element
Element rootElement = doc.createElement("contacts");
doc.appendChild(rootElement);
// Child Element
Element contact = doc.createElement("contact");
rootElement.appendChild(contact);
Element name = doc.createElement("name");
name.appendChild(doc.createTextNode("홍길동"));
contact.appendChild(name);
Element email = doc.createElement("email");
email.appendChild(doc.createTextNode("hong@example.com"));
contact.appendChild(email);
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
DOMSource source = new DOMSource(doc);
StreamResult result = new StreamResult(new File("output.xml"));
transformer.transform(source, result);
} catch (Exception e) {
e.printStackTrace();
}
}
}
이 예제에서는 contacts 루트 요소와 하위 contact 요소를 만들어 XML 형식으로 데이터를 저장합니다. XML은 데이터 계층 구조를 표현하기 좋으며, 웹 서비스와의 데이터 교환이나 설정 파일 관리에 자주 사용됩니다.
파일 I/O 활용하여 데이터 관리하기
데이터를 파일로 저장할 때는 파일의 입출력 처리를 위해 FileWriter와 FileReader 또는 BufferedWriter와 BufferedReader를 사용할 수 있습니다. 파일 입출력을 통해 데이터를 저장하고 불러와 데이터를 분석할 수 있습니다.
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class FileIOExample {
public static void main(String[] args) {
String fileName = "data.txt";
// 파일 저장
try (FileWriter writer = new FileWriter(fileName)) {
writer.write("저장할 데이터 내용");
writer.flush();
} catch (IOException e) {
e.printStackTrace();
}
// 파일 읽기
try (BufferedReader reader = new BufferedReader(new FileReader(fileName))) {
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
이 코드에서는 data.txt 파일을 생성해 데이터를 저장하고 다시 읽어오는 방법을 보여줍니다. 파일 입출력을 통해 데이터의 지속성을 관리할 수 있습니다.
JSoup으로 만든 데이터를 다른 프로그램과 연동하기
JSoup로 수집한 데이터를 JSON, XML 형식으로 저장한 후 다른 프로그램과 연동할 수 있습니다. 예를 들어, 수집한 데이터를 JSON 포맷으로 저장하면 Python, JavaScript 등 다른 언어에서도 해당 데이터를 쉽게 불러와서 분석할 수 있습니다. 이때 JSON 포맷을 사용해 다양한 환경에서 데이터 활용성을 높이는 것이 중요합니다.
참고사이트
'JAVA' 카테고리의 다른 글
[JAVA] JSoup 구글 뉴스 크롤링 예제 (3) | 2024.10.29 |
---|---|
[JAVA] JSoup의 성능 최적화 (0) | 2024.10.29 |
[JAVA] JSoup AJAX와 동적 페이지 처리 (0) | 2024.10.29 |
[JAVA] JSoup 에러 핸들링과 예외 처리 (0) | 2024.10.29 |
[JAVA] JSoup 데이터 정제 및 변환 (3) | 2024.10.28 |
[JAVA] JSoup HTML 데이터 추출 (0) | 2024.10.28 |
[JAVA] JSoup CSS 선택자 (0) | 2024.10.28 |
[JAVA] JSoup 기본 사용법 (0) | 2024.10.28 |