반응형
250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- java bigdecimal
- IntelliJ
- AWS CI/CD 구축하기
- docker
- codedeploy error
- Airflow
- node
- bootstrap
- chartjs
- codebuild
- or some instances in your deployment group are experiencing problems.
- 도커
- redis
- Spring
- aws
- Jenkins
- SQL
- Spring Error
- Flux
- Kafka
- codepipeline
- JavaScript
- Python
- VPN
- PostgreSQL
- chart.js
- kubeflow
- aws cicd
- codedeploy
- COALESCE
Archives
- Today
- Total
Small Asteroid Blog
Java Selenium 페이지 이동 (크롤링하기) 본문
728x90
셀레니움을 사용하기 위해서 현재 사용하고있는 크롬버전에 맞는 드라이버를 설치한 후 경로를 설정해준다.
//드라이버 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";
}
728x90
반응형
'백엔드 > 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 |