selenium 9

[BeautifulSoup, selenium] 동적 스크롤 페이지 스크래핑

구글 플레이 영화 페이지에 접속하여 할인이 적용된 영화 리스트를 가져온다. 해당 페이지는 동적 페이지로 스크롤을 내려야 나머지 영화가 로딩되기 때문에 selenium으로 페이지를 열어 스크롤을 내리고 스크래핑한다. from selenium import webdriver from bs4 import BeautifulSoup import time URL = 'https://play.google.com/store/movies/top' driver = webdriver.Chrome() driver.maximize_window() driver.get(URL) driver.implicitly_wait(10) # 스크롤 끝까지 내리기 prev_height = driver.execute_script('return do..

RPA/Python 2021.05.14

[selenium] 페이지 로딩까지 대기

1. implicitly wait : 조건만큼만 대기하다 다음 동작 실행 from selenium import webdriver driver = webdriver.Chrome() driver.get('https://www.w3schools.com/html/') driver.maximize_window() # 10초 동안 페이지 로딩 대기 (로딩 되면 바로 다음 수행) driver.implicitly_wait(10) elem = driver.find_element_by_xpath('//*[@id="leftmenuinnerinner"]/a[61]') 2. explicitly wait : 조건이 완료될때까지 대기 from selenium import webdriver from selenium.webdriver..

RPA/Python 2021.05.06

[selenium] 동적 페이지 스크롤

예를 들면 쇼핑몰 같은 페이지는 처음부터 모든 문서를 로딩하지 않고 스크롤을 내리면 이후 문서가 로딩되는 동적 페이지이다. 페이지 스크롤 및 동적 페이지 스크롤 방법은 아래와 같다. from selenium import webdriver # from selenium.webdriver.common.keys import Keys import time driver = webdriver.Chrome() driver.get('https://shopping.naver.com/') # 검색창에 검색어 입력 elem = driver.find_element_by_xpath('//*[@id="autocompleteWrapper"]/input[1]') elem.send_keys('선풍기') # 검색창에서 enter 눌러 검..

RPA/Python 2021.05.06

[selenium] iframe 내 Element 접근 (checkbox, radio, select 태그)

페이지에 iframe이 있다면 iframe 내 Element는 직접 접근 안된다. 먼저 접근하려는 Element가 있는 iframe으로 전환 후 Xpath로 접근하여 처리하고 다시 빠져 나온다. from selenium import webdriver driver = webdriver.Chrome() driver.get('https://www.w3schools.com/tags/tryit.asp?filename=tryhtml5_input_type_checkbox') # iframe id값을 이용해 프레임 전환 driver.switch_to.frame('iframeResult') # Xpath로 해당 checkbox/radio button 접근 후 클릭 elem = driver.find_element_by_x..

RPA/Python 2021.05.06

[selenium] Xpath 등을 이용하여 Element 동작 처리하기

from selenium import webdriver from selenium.webdriver.common.keys import Keys # 드라이버 생성 driver = webdriver.Chrome() # 네이버 이동 driver.get('https://www.naver.com') # 1. 네이버 첫 페이지에서 '카페'를 찾아 클릭 # '카페' 글자가 텍스트여서 텍스트 찾기로 가능하다. # '카페'라는 이름의 첫번째 Element 찾기 # elem.get_attribute('href')와 같이 attribute 값 확인 가능 elem = driver.find_element_by_link_text('카페') # Element 클릭하기 elem.click() # 2. 네이버 검색창의 Xpath값으로 ..

RPA/Python 2021.05.05

[selenium] Headless로 처리하기

RPA 처리 시 실제 브라우저를 실행하지 않고 가상 브라우저로 처리하는 방법이 있다. 드라이버 생성 시 Headless 옵션을 주면 가능하다. 일부 사이트는 Headless를 통한 크롤링 접근을 차단하는 곳이 이에 대한 추가 옵션이 필요하다. from selenium import webdriver from selenium.webdriver.chrome.options import Options # 브라우저 실행하지 않고 처리하기 옵션 (Headless로 실행하기) # 참고 및 인용 : https://beomi.github.io/gb-crawling/posts/2017-09-28-HowToMakeWebCrawler-Headless-Chrome.html op = Options() # Headless 설정 op..

RPA/Python 2021.05.05

[selenium] 브라우저 및 Handle 컨트롤

from selenium import webdriver # chrome 드라이버가 workspace에 없고 다른 경로에 있을 경우 # driver = webdriver.Chrome(executable_path=r'C:\driver\chromedriver.exe') driver = webdriver.Chrome() # 네이버로 페이지 이동 driver.get('https://www.naver.com') driver.implicitly_wait(10) # 브라우저 뒤로, 앞으로 가기 driver.back() driver.implicitly_wait(10) driver.forward() driver.implicitly_wait(10) # 브라우저 새로고침 driver.refresh() driver.implic..

RPA/Python 2021.05.05
반응형