학습 주제
Selenium
학습 내용
요청을 하고 응답을 하는 과정에서 wait을 진행, call을 통해 특정 요소를 가져올 수 있음.
암묵적 기다림, 명시적 기다림이 있다.
grid 바둑판 배열
class name이 특정하게 되면 스크래핑이 쉽게 됨. 이러다보니 웹 제작자들이 손쉽게 스크래핑 되는 것을 막기 위해, 이름을 랜덤화 됨.
이번 실습엔 구조를 중심으로 찾아갈 예정->Xpath 사용
이름을 랜덤화 하더라도, 위치는 변하지 않음. XPath -> Xml path,
우리도 웹 페이지에서 찾고자하는 요소를 데스크탑/폴더1/폴더2/음악.mp3 처럼 경로로 나타낼 수 있음.
찾는 위치를 검사하여, 그 위치에서 우클릭, Copy, Copy XPath 순으로 들어간다.
div[2]는 인덱스가 1부터 시작.
id="__next"
이번 웹페이지는 비동기 처리가 이뤄짐. 일단 응답해주고, 데이터를 채워나가는 식. 실제로도 웹 페이지가 뜨고 내용이 올라오는데 약간의 딜레이가 있는 것을 알 수 있음.
NoSuchElemnetException이라는 오류가 뜬다.
저번시간에 떴더 오류와 동일. 비동기 때문에 이런 오류가 뜸. get을 한 뒤에 바로 find_element를 하게 되면, 그런 요소가 뜨기도 전에 찾기를 하게되기 때문.
저번에 사용했던 Implicit Wait이다.
아까와는 달리 get과 find_element 사이에 driver.implicitly_wait(10)이 들어갔다. 이는 페이지가 완전히 로딩되거나(렌더링 종료), 10초를 다 기다린 후에 동작하겠다는 뜻이다.
항상 10초를 기다린다는 것은 아님.
명시적 기다림.
중간에 차이가 있음. grid의 요소 번째를 나타낸다.
변하는 부분과, 변하지 않는 부분을 구분해서 for 문 진행.
중간에 변할 부분을 format을 사용해서 적용. 얻은 값을 print로 확인하였다.