package model;
import java.io.IOException;
import java.sql.Connection;
import java.sql.JDBCType;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Iterator;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
public class Crawling {
private static final String INSERT = "INSERT INTO MARKET(BID,TITLE,PRICE,REGION) VALUES((SELECT NVL(MAX(BID),10)+1 FROM MARKET),?,?,?)";
private static Connection conn;
private static PreparedStatement pstmt;
public static void main(String[] args) {
final String url = "https://www.daangn.com/fleamarket/";
String productName, productPrice, productRegion;
conn = JDBCUtil.connect();
try {
Document doc = null;
doc = Jsoup.connect(url).get();
// 상품명, 가격, 거래지역
Elements title = doc.select("h2.card-title");
Elements price = doc.select("div.card-price");
Elements region = doc.select("div.card-region-name");
// System.out.println(region);
// 하나씩 가져온건데 타입을 스트링이랑 인트로 어떻게 바꾸나
Iterator<Element> itr1 = title.iterator();
Iterator<Element> itr2 = price.iterator();
Iterator<Element> itr3 = region.iterator();
// 어차피 제목이 없으면 물건의 정보가 없는 것이어서 타이틀 개수만큼 포문 사용
for (int i = 0; i < title.size(); i++) {
productName = itr1.next().text();
productPrice = itr2.next().text();
productRegion = itr3.next().text();
System.out.println("상품명 : " + productName);
System.out.println("가격 : " + productPrice);
System.out.println("거래지역 : " + productRegion);
System.out.println();
pstmt = conn.prepareStatement(INSERT);
pstmt.setString(1, productName);
pstmt.setString(2, productPrice);
pstmt.setString(3, productRegion);
pstmt.executeUpdate();
}
} catch (IOException | SQLException e) {
e.printStackTrace();
} finally {
JDBCUtil.disconnect(pstmt, conn);
}
//
}
}