Group Study 03/25
시간 : 16:10~17:30
참가자 : 김도윤, 최교득, 이동헌
활동내역
Selenium
가상의 브라우저를 띄워서 이를 활용하여 테스트 자동화 및 크롤링할 수 있는 툴
Selenium과 crawling 응용 코드
목표 : Selenium을 사용해서 무신사 내 장바구니에 있는 물품 사진 crawling 하기
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.select.Elements;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
public class SeleniumTest2 {
public static final StringWEB_DRIVER_ID= "webdriver.chrome.driver"; // 드라이버 ID
public static final StringWEB_DRIVER_PATH= "C:\\Users\\tnsdu\\Downloads\\chromedriver_win32\\chromedriver.exe";// 드라이버 경로
public static void main(String[] args)throws Exception {
System.setProperty(WEB_DRIVER_ID,WEB_DRIVER_PATH);
ChromeOptions options = new ChromeOptions();
// 브라우저 보이지 않기
// options.addArguments("headless");
WebDriver driver = new ChromeDriver(options);
//무신사 장바구니 크롤링
driver.get("https://www.musinsa.com/auth/login?referer=https%3A%2F%2Fwww.musinsa.com%2Fapp%2F");
//findElement id, pw 태그 주소
WebElement elementId = driver.findElement(By.name("id"));
WebElement elementPw = driver.findElement(By.name("pw"));
Thread.sleep(1000);
//아이디 입력
elementId.sendKeys("");
Thread.sleep(1000);
//비밀번호 입력
elementPw.sendKeys("");
Thread.sleep(1000);
//로그인 클릭
driver.findElement(By.className("login-button__item")).click();
Thread.sleep(1000);
//장바구니 클릭
driver.findElement(By.xpath("//*[@id=\"default_top\"]/div[3]/div[7]/a")).click();
//driver.getPageSource() 로그인 접속후 페이지의 소스 내용을 그대로 도큐먼트에 저장
Document document = Jsoup.parse(driver.getPageSource());
//document안에 connect_img a img이라는 태그를 찾는 것
Elements elements = document.select(".connect_img a img");
System.out.println(elements.size());
Thread.sleep(1000);
elements.stream().forEach(element -> {
String thumbLink = element.attr("src");
System.out.println("https:"+thumbLink);
});
}
}
😭오류 사항
이번 코드는 강의 시간에 만들었던 코드들을 응용해서 만들어본 코드라 사실 오류가 없었습니다 하지만 에러 사항이 하나 있었는데 그것은 바로
Selenium을 사용해서 로그인하고 장바구니까지 들어가는 데는 성공했는데 장바구니에 있는 목록의 사진을 crawling 하려 하니 내 목록을 불러오지 못하는 상황이 생겼습니다 처음에는 사진의 경로 입력에 문제가 있는 줄 알고 여러 태그들을 확인해가며 했지만 결국 불러오지 못했습니다 포기하려던 순간 아 혹시 로그인된 기록을 불러오지 못한 것 아닐까? 하는 생각이 들었습니다 해결하기 위해서 여기저기 물어보며 해결책을 찾던 중 찾은 해결책은 바로
Document document = Jsoup.parse(driver.getPageSource());
이 코드였습니다 이 코드는 driver.getPageSource() 로그인 접속 후 페이지의 소스 내용을 그대로 도큐먼트에 저장할 수 있게 해주는 코드입니다 JSoup에 메서드를 많이 모르는 상황이라 어떠한 문제였는지 조차 파악하지 못하고 있었는데 찾고 보니 너무 간단한 문제였습니다
'Group_Study' 카테고리의 다른 글
Group Study 03/24 (0) | 2022.03.25 |
---|---|
Group Study 2022.03.23 (0) | 2022.03.24 |
2022.03.22 Group Study (0) | 2022.03.23 |