JAVA
day22) Java를 이용한 웹 크롤링 2 - 크롤링한 값 db에 저장하기
code_learner
2022. 1. 25. 17:36
[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();
}