본문 바로가기
백엔드/Spring

Java Selenium 페이지 이동 (크롤링하기)

by 작은소행성 2021. 10. 27.

 

 

셀레니움을 사용하기 위해서 현재 사용하고있는 크롬버전에 맞는 드라이버를 설치한 후 경로를 설정해준다.

//드라이버 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"; 
    }

 

 

 

 

 

 

 

반응형