Notice
Recent Posts
Recent Comments
Link
gyeomii
JAVA에서 웹 크롤링하기(1) 본문
반응형
1. 자바프로젝트 생성
자바에서 Spring boot 프로젝트를 생성한다.
maven으로 생성했다.
2. Dependency 추가
자바에서 selenium을 사용하기 위해 selenium dependency를 추가한다.
<!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java -->
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>3.141.59</version>
</dependency>
3. chrome 드라이버 다운로드
자신의 chrome 버전에 맞는 드라이버를 설치한다.
크롬창 -> 설정 -> Chrome정보 -> 버전확인
)
)
크롬 드라이버 다운로드 페이지
크롬 드라이버 다운로드 페이지에 가서 자신의 크롬버전과 맞는 드라이버를 다운로드한다.
현재 최신버전은 114버전이지만 현재 크롬버전은 116이기에 Test버전을 다운받는다.
(114버전드라이버를 사용해도 작동하긴한다.)
)
)
복사한 주소를 URL창에 붙여넣으면 zip이 다운로드 된다.
다운로드한 zip파일을 압축해제한다.
4. JAVA 코드 작성
public class Crawler {
public static final String WEB_DRIVER_ID = "webdriver.chrome.driver";
public static final String WEB_DRIVER_PATH = "../chromedriver/chromedriver_win64/chromedriver.exe";
public WebDriver initWebDriver() {
try {
System.setProperty(WEB_DRIVER_ID, WEB_DRIVER_PATH);
} catch (Exception e) {
e.printStackTrace();
}
ChromeOptions options = new ChromeOptions();
options.addArguments("--headless");//브라우저가 백그라운드에 실행(화면에 뜨지않음)
options.addArguments("--window-size= x, y") //실행되는 브라우저 크기를 지정
options.addArguments("--start-maximized") //브라우저가 최대화된 상태로 실행
options.addArguments("--start-fullscreen") //브라우저가 풀스크린 모드(F11)로 실행
options.addArguments("--blink-settings=imagesEnabled=false") //브라우저에서 이미지 로딩을 하지 않음
options.addArguments("--mute-audio") //브라우저에 음소거 옵션을 적용
options.addArguments("incognito") //시크릿 모드의 브라우저가 실행
return new ChromeDriver(options);
}
public WebDriver search(WebDriver driver){
//get()메소드에 url을 입력하면 해당 페이지로 이동한다.
driver.get("www.naver.com");
// findElement()메소드로 원하는 요소를 찾는다.
// By를 사용하여 선택자를 id,class,xPath등으로 정할 수 있다.
WebElement inputQuery = driver.findElement(By.id("query"));
//sendKeys()메소드를 사용하면 원하는 값을 해당 element에 입력할 수 있다.
//검색, 로그인등에 활용한다.
inputQuery.sendKeys("검색어");
WebElement searchBtn = driver.findElement(By.id("search-btn"));
//click()메소드를 사용하면 element를 클릭할 수 있다.
searchBtn.click();
return driver;
}
public WebDriver getData(WebDriver driver){
WebElemetn div = driver.findElement(By.className("link_tit");
String data = div.getText();
return data
}
}
WEB_DRIVER_ID는 환경변수에 chrome driver를 등록하기 위함이다.
WEB_DRIVER_PATH는 chromedriver가 위치한 경로를 작성한다.
WebDriver를 설정하기 위해 ChromeOption으로 option을 설정한다.
WebDriver와 WebElement를 사용하여 원하는 작업을 할 수 있다.
WebDriver의 findElement()와 By를 사용하여 원하는 WebElement를 찾고
WebElement의 sendKeys(), click(), getText()등의 메소드를 사용하여 작업을 한다.
)
)
public class CrawlingService {
@Autowired
private Crawler crawler;
public String Crawling() {
String url = "https://pp.kepco.co.kr/";
log.info("kepcoId = {}, password = {}", kepcoId, password);
WebDriver driver = crawler.initWebDriver();
driver = crawler.search(driver);
data = crawler.getData(driver);
System.out.print(data);
//가상의 크롬창을 닫는다.
driver.close();
//종료한다.
driver.quit();
}
}
반응형
'개발' 카테고리의 다른 글
AWS 이슈 (java scheduler 사용시) (0) | 2023.12.15 |
---|---|
📌Web Application Layer (0) | 2023.09.20 |
🕷Data Crawling 3 (0) | 2023.08.23 |
🕷Data Crawling 2 (0) | 2023.08.22 |
🕷Data Crawling 1 (0) | 2023.08.22 |