본문 바로가기
JAVA

day22) Java를 이용한 웹 크롤링 2 - 크롤링한 값 db에 저장하기

by code_learner 2022. 1. 25.

[2번 select하기]

 

블로그 글 목록에서 제목과 작성일자를 크롤링 할때

->Elements eles=doc.select("div#body > ul > li");

이렇게 하면 li태그에 있는 모든 값이 하나로 불러오게 된다. 

		Elements eles=doc.select("div#body > ul > li");
		Iterator<Element> itr=eles.iterator();
		Iterator<Element> itr1=eles.select("a").iterator();
		Iterator<Element> itr2=eles.select("span").iterator();

이런식으로 하면 li태그 아래에 있는 a태그와 span태그를 따로 불러올 수 있다.

 

 

[ArrayList에 크롤링 한 값 저장]

		ArrayList<BlogVO> datas = new ArrayList<BlogVO>();

		while(itr1.hasNext()) {
			BlogVO vo = new BlogVO();//ArrayList에 저장하기 위해 BlogVO객체 생성
			vo.setTitle(itr1.next().text());//.next할때 마다 다음 index로 이동한다.
			vo.setDay(itr2.next().text());//.text()  =  태그를 제거한 값으로 저장한다

			System.out.println();
			datas.add(vo);
		}

 

 

[ArrayList에 저장된 값 DB에 저장하기]

		conn=JDBCUtil.connect();//JDBCUtil 패키지에서 conn가져오기
		String sql = "insert into blog (bid,title,day) values((select nvl(max(bid),0)+1 from blog),?,?)";//쿼리문
		
        try {
			pstmt=conn.prepareStatement(sql);
			for (BlogVO v : datas) {
				pstmt.setString(1, v.getTitle());
				pstmt.setString(2, v.getDay());
				pstmt.executeUpdate();
			}

		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

댓글