저번에 만들었던 웹크롤러도 내가 처음에 의도했던 기능들을 모두 수행하지만, 완성도를 높이고 다양한 기능을 추가하고자 한다. Selenium은 실제 브라우저와 연동하여 자바스크립트의 실행, 폼의 작성 및 클릭, 드래그 앤 드롭 등의 동적인 행동이 가능하기 때문에 이용해보고자 한다.
셀레니움 크롤러 기본 사용법 - 뻥뚫리는 파이썬 코드 모음
[웹 크롤러 입문] 자바스크립트 다루기(Selenium)
위 사이트들 참고 - 브라우저는 크롬드라이버를 이용했다.
먼저 기본 함수들을 이용해 홈페이지에서 로그인을 해보는 간단한 코드를 짜보았다. 😁
from selenium import webdriver
# 환경 변수로 등록한 경우
# driver = webdriver.PhantomJS()
# 절대 경로로 실행시킬 경우
driver = webdriver.Chrome('chromedriver.exe')
driver.get("<https://www.itlo.org/login>") # 도서제작 봉사활동 로그인 페이지에 접속
driver.implicitly_wait(3) # 접속하는 동안 대기
login_xpath = {'id': '//*[@id="xvcontent"]/div/form/table/tbody/tr/td[1]/input[2]',
'pw': '//*[@id="xvcontent"]/div/form/table/tbody/tr/td[1]/input[3]',
'btn': '//*[@id="sub"]'}
login_info = {'id': '*****@gmail.com', 'pw': '********'}
driver.find_element_by_xpath(login_xpath['id']).send_keys(login_info['id']) # 아이디
driver.find_element_by_xpath(login_xpath['pw']).send_keys(login_info['pw']) # 비밀번호
driver.find_element_by_xpath(login_xpath['btn']).click() # 로그인
#driver.close()
from selenium import webdriver
# 환경 변수로 등록한 경우
# driver = webdriver.PhantomJS()
# 절대 경로로 실행시킬 경우
driver = webdriver.Chrome('chromedriver.exe')
driver.get("<https://www.itlo.org/login>") # 도서제작 봉사활동 로그인 페이지에 접속
driver.implicitly_wait(3) # 접속하는 동안 대기
login_info = {'id': '*****@gmail.com', 'pw': '********'}
driver.find_element_by_name('email').send_keys(login_info['id']) # 아이디
driver.find_element_by_name('pwd').send_keys(login_info['pw']) # 비밀번호
driver.find_element_by_id('sub').click() # 로그인
#driver.close()
셀레니움 wait 개념 이해하기 (implicitly wait VS explicitly wait) - 뻥뚫리는 파이썬 코드 모음
목표 사이트에서는 제작 가능한 새로운 도서가 등록되면 페이지 내부에 알림이 뜬다. fade in, fade out 형태로 나타났다가 사라지는 것을 보니 자바스크립트인 것 같다. 자바스크립트에 대한 지식은 없지만 script로 검색해서 찾아보았고 해당 요소를 복사해왔다. function pinpong(message)라는 함수에서 동작하는 것을 알 수 있다. ⇒
운이 좋게도 알림이 실제로 떴을 때 코드 구성을 볼 수 있었다.
xpath = '/html/body/div[4]/div' 또는 class = 'ajs-message ajs-visible'
하지만 이렇게 셀레니움으로 알림 대기를 하는 것보다 기존 방법대로 최근에 등록된 도서를 확인하는 것이 더 효율적인 것 같아 이용하지 않았다. (알림 간격이 최소 2시간 이상으로 길기 때문..)
대신 셀레니움을 이용해서 책이 등록되면 자동으로 로그인을 하고 책 제작 신청을 하도록 했다.