파이썬에서 Selenium을 사용하여 스크래핑 (기본)

스크래핑을 공부하려고 생각하고, Selenium을 사용하여 브라우저를 조작해 보았으므로, 가볍게 정리해 두려고 생각합니다.

사용한 것



  • 셀레늄
  • 자동으로 브라우저를 조작하기 위한 라이브러리

  • 크롬
  • 브라우저


  • 브라우저에 맞는 드라이버 준비



    브라우저를 사용하려면 각 브라우저에 맞게 드라이버를 준비해야 합니다.
    이번에는 Chrome을 사용하므로 공식 사이트에서 ChromeDriver를 다운로드합니다.

    Selenium 설치



    pip에 selenium 설치
    pip install selenium

    웹페이지를 열어보세요



    브라우저 열기webdriver.Chrome(driver_path)
    웹 페이지 열기driver.get(URL)
    웹 페이지 닫기driver.close()
    브라우저 종료(모든 창 닫기)driver.quit()
    from selenium import webdriver
    driver = webdriver.Chrome(driver_path)
    driver.get(URL)
    driver.close()
    driver.quit()
    

    요소에 액세스해 봅니다.



    HTML의 요소에 액세스하기 위해 id, class, name 등에서 요소를 지정하여 얻을 수 있습니다.

    참고 자료

    id로 가져오기driver.find_element_by_id('ID')
    class 로 취득driver.find_element_by_class_name('CLASS_NAME')
    이름으로 얻기driver.find_element_by_name('NAME')
    링크 텍스트로 얻기driver.find_elements_by_link_text('LINK_TEXT')
    중첩된 요소는 path 를 지정해 취득driver.find_elements_by_xpath(".//a")

    액션



    취득한 요소에 대해서, 액션을 일으키는 일로 web 페이지를 조작합니다.

    참고 자료

    버튼 클릭driver.find_element_by_id('Btn').click()
    양식에 문자 입력driver.find_element_by_name('From').send_keys("text")

    기다리다



    자주 있는 것이, 화면의 로드가 완료하기 전에, 처리가 달려 버려 에러가 된다.
    이를 해결하기 위해 필요한 요소가 준비될 때까지 몇 초 기다릴 수 있습니다.
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    from selenium.webdriver.common.by import By
    
    WebDriverWait(driver, WAIT_SECOND).until(EC.presence_of_element_located((By.CLASS_NAME, 'Btn')))
    

    브라우저 조작



    그럼 위를 근거로 가볍게 조작해 보겠습니다.

    버튼을 클릭해보세요



    예를 들어 모 사이트의 구매 버튼을 누르고 싶다면

    <화면>


    <소스>

    from selenium import webdriver
    driver = webdriver.Chrome(driver_path)
    driver.get(URL)
    driver.find_element_by_class_name('new_addToCart').click()
    driver.quit()
    

    이러한 느낌으로 find_element_by_class_name() 로 요소를 취득해 click() 로 클릭 액션을 일으킵니다.

    텍스트 입력해보기



    검색창에 검색 키워드를 입력하고 검색 버튼을 누릅니다.

    <화면>


    <소스>

    from selenium import webdriver
    driver = webdriver.Chrome(driver_path)
    driver.get(URL)
    driver.find_element_by_id('searchWords').send_keys("search text")
    driver.find_element_by_id('searchBtn').click()  
    

    이제 검색 상자에 자동으로 "search text"가 입력되어 검색됩니다.

    요약



    버튼을 누르거나, 텍스트 입력을 하거나의 기본 동작을 기억하면, 대체로의 조작을 간단하게 할 수 있는 인상입니다.
    역시, 브라우저 조작을 프로그램으로 실시하는 것으로, 병렬 처리를 할 수 있는 것의 혜택은 크네요.
    다만, 브라우저를 많이 시작하면 PC가 엄청 무거워지기 때문에, 거기는 조심해야 합니다.

    좋은 웹페이지 즐겨찾기