SpringBoot
자바 스크래핑
밤린
2023. 5. 1. 11:16
스크래핑 (Scraping) 이란?
시스템이나 웹사이트에 있는 정보(데이터) 중에서 필요한 정보를 추출 및 가공하여 제공하는 소프트웨어 기술입니다.
이를 사용하면 여러 사이트에 있는 정보를 가져올 수 있습니다.
다만, 타사이트에서 스크래핑을 통해 데이터를 가져오는 것은 민감한 부분이므로 보수적으로 진행해야 합니다.
예제는 야후 파이넨설을 사용하였습니다. 사용하기 전에 야후 파이넨설의 루트 서버의 robots.txt 파일을 확인하겠습니다.
제가 사용하려는 부분은 'finance.yahoo.com/quote/'을 사용하기 때문에 disallow가 되지 않았습니다.
Intellilj gradle에서 'implementation 'org.jsoup:jsoup:1.7.2' 의존성을 추가해주고 아래와 같은 코드를 작성합니다.
public static void main(String[] args) {
Connection connection = Jsoup.connect(url);
try {
Document document = connection.get();
Elements attributeValue = document.getElementsByAttributeValue("data-test", "historical-prices"); //스크래핑 해올 부분
Element ele = attributeValue.get(0);
Element tbody = ele.children().get(1);
for(Element e :tbody.children()){
String txt = e.text();
if(!txt.endsWith("Dividend")){
continue;
}
String[] splits = txt.split(" ");
String month = splits[0];
int day = Integer.valueOf(splits[1].replace(",",""));
int year = Integer.valueOf(splits[2]);
String dividend = splits[3];
System.out.println(year + "/" + month + "/" + day + "->" + dividend);
}
} catch (IOException e) {
throw new RuntimeException(e);
}
}
html에서 스크래핑 해올 부분을 개발자 도구를 통해 찾은 후 parse하여 원하는 형식으로 가져옵니다.
아래는 스크래핑 결과입니다.