지난 글을 보면 알다시피 백준의 유저 페이지에서 스크래핑, 크롤링 등의 행위는 지양된다
나도 robot.txt에 대해 알기 전 몇 번 해보긴 했지만..
그래서 내 블로그에 올라오는 코드들 전부 원래는 URL이 백준의 유저 페이지였지만 변경해서 업로드 한다.
자바 크롤링/스크래핑에 대해 검색하면 json과 jsoup이 많이 나왔다
나는 그 중 jsoup을 사용하기로 했다
jsoup은 html을 파싱해주는 자바 오픈 소스 라이브러리이다.
jsoup을 설치하고 (이때 Libraries에서 파일을 정확한 위치에 넣자!! 난 엉뚱한 곳에 넣어 계속 에러 떴다..) 본격적인 스크래핑을 시작했다
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
package main;
import java.io.IOException;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
public class project{
public static void main(String[] args) throws IOException {
String URL = "https://peraspera.tistory.com";
Document doc = Jsoup.connect(URL).get();
System.out.println(doc);
}
}
|
cs |
URL에 대해 전체 html을 가져오는 코드이다
실행 결과는 아래와 같다
아래 부분이 잘렸지만, URL의 html이 처음부터 끝까지 잘 가져와졌다
html 태그를 제거하고 순수 문자열만 얻고 싶을 때는
String text = doc.text();
를 이용하면 된다
또한 클래스 명이 'header'인 항목을 가져오고 싶다면
Elements items = doc.select("header");
를 이용하면 된다
두 가지를 합쳐 클래스 명이 'header'인 항목의 순수 문자열만 가져오는 코드는 아래와 같다
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
package project;
import java.io.IOException;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.select.Elements;
public class project {
public static void main(String[] args) throws IOException {
String URL = "https://peraspera.tistory.com/";
Document doc = Jsoup.connect(URL).get();
Elements items = doc.select("header");
String text = items.text();
System.out.println(text);
}
}
|
cs |
select를 통해 return되는 element가 많을 경우에는 for문을 사용하면 된다.
'프로젝트 > 백준 풀이 인증 프로그램' 카테고리의 다른 글
새로운 문제만 가져오기 > 22.02.16 (0) | 2023.02.01 |
---|---|
코드 일정 간격 새로고침 > 22.02.14 (0) | 2022.03.26 |
robots.txt > 22.01.20 (0) | 2022.03.06 |
피드백 > 22.01.18 (0) | 2022.03.06 |
아이디어 > 21.12.20 (0) | 2022.03.06 |