Notice
Recent Posts
Recent Comments
Link
«   2025/08   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
Tags
more
Archives
Today
Total
관리 메뉴

노승현

당근마켓 웹 크롤링 본문

JAVA/문제풀이

당근마켓 웹 크롤링

nsh95 2023. 12. 25. 20:08
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);
		}
//		

	}
}

'JAVA > 문제풀이' 카테고리의 다른 글

능단평 오답노트(2)  (1) 2023.12.22
능단평 문제 오답노트  (1) 2023.12.22
DTO,DAO 를 이용한 자판기 프로그램  (1) 2023.12.14
MVC 이용한 학생부 프로그램 1단계  (1) 2023.12.11
도서 판매 프로그램(검색)  (0) 2023.12.10