셀레니움을 사용하기 위해서 현재 사용하고있는 크롬버전에 맞는 드라이버를 설치한 후 경로를 설정해준다.
//드라이버 ID
public static final String WEB_DRIVER_ID = "webdriver.chrome.driver";
//드라이버 경로
public static final String WEB_DRIVER_PATH = "D:\\Users\\library\\chromedriver.exe";
apiurl 에는 크롤링 하고자 하는 주소를 넣으면 된다.
//셀레니움
@RequestMapping("seleniumsave")
public String SeleniumSearch(@RequestParam String keyword) {
System.out.println("keyword > " + keyword);
String apiurl;
int pagecount = 10;
try {
System.setProperty(WEB_DRIVER_ID, WEB_DRIVER_PATH);
//웹 주소 넣기
apiurl = ""
ChromeOptions options = new ChromeOptions();
options.addArguments("--disable-popup-blocking");
options.addArguments("--disable-default-apps");
options.addArguments("--disable-notifications");
//webdriver 객체생성
ChromeDriver driver = new ChromeDriver(options);
//빈탭생성
driver.executeScript("window.open('about:blank','_blank');");
//탭목록 가져오기
List<String> tabs = new ArrayList<String>(driver.getWindowHandles());
//첫번쨰 탭으로 전환
driver.switchTo().window(tabs.get(0));
//웹페이지 요청
driver.get(apiurl);
//본문내용 가져오기
WebElement title; //제목
String link; //링크
for(int i=1; i<=pagecount;i++){
title = driver.findElementByXPath("//*[@id=\"exportArticles\"]/div/div[2]/div["+i+"]/div/a[1]");
link = title.getAttribute("href");
System.out.println("link > "+link);
//title 이동
driver.executeScript("window.open('about:blank','_blank');");
List<String> tabs1 = new ArrayList<String>(driver.getWindowHandles());
//새로운 탭 열기
driver.switchTo().window(tabs1.get(1));
//페이지 요청
driver.get(link);
Thread.sleep(2000);
//창 닫기
driver.close();
//탭 변경
driver.switchTo().window(tabs.get(0));
}
Thread.sleep(3000);
//chrome 종료
driver.quit();
} catch (Exception e) {
e.printStackTrace();
}
//html page
return "seleniumsearch";
}
반응형
'공부 > Spring' 카테고리의 다른 글
[jquery] select 선택에 따라 두번째 select 변경하기 (0) | 2021.10.29 |
---|---|
[Java] 자바 문자열에서 숫자 추출하기 (0) | 2021.10.27 |
[spring error] Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception (0) | 2021.10.26 |
SyntaxError: ('future feature print_function is not defined', ('__pyclasspath__/numpy/__init__.py', 107, 0, '')) (0) | 2021.10.22 |
[spring] spring cors 해결 (0) | 2021.10.19 |