본문 바로가기
TIL

Selenium(셀레니움) 개념 익히기, 실습 공부

by aimaimee 2023. 5. 4.

개념 익히기

유튜브 강의

  • 셀레니움 및 웹 드라이버 설치

    !pip install Selenium
    # chromium 드라이버를 인스톨 하기 위해 업데이트가 필요함
    !apt-get update
    !apt install chromium-chromedriver
    
    # 유저 라이브러리에 설치된 드라이버를 bin에 카피해둠
    !cp /usr/lib/chromium-browser/chromedriver /usr/bin
    
    # 패스 설정
    import sys
    sys.path.insert(0, '/usr/lib/chromium-browser/chromedriver')
  • 웹 드라이버 설정

    from selenium import webdriver
    options = webdriver.ChromeOptions()
    options.add_argument('--headless')
    options.add_argument('--no-sandbox')
    options.add_argument('--disable-dev-shm-usage')
  • 웹 드라이버 객체 생성

    driver = webdriver.Chrome('chromedriver', options=chrome_options
  • 셀레니움 실행
    driver.get("http://링크주소/")
    driver.find_elements_by_tag_name('')
    driver.find_elements_by_css_selector('') : 오른쪽 마우스 => Copy => Copy selector
    driver.find_elements_by_xpath('')

  • F12(inspect) 눌러서 태그 검색 : 해당 부분은 부캠 스크래핑 강의로 알고 있음

실습

  • 셀레니움 및 웹 드라이버 설치
    해당 부분은 "WebDriverException: Message: Service chromedriver unexpectedly exited. Status code was: 1"라는 에러 메세지가 뜸. 2번 블로그를 통해 이유를 파악. 2번 블로그와 마찬가지로, 같은 코드를 받아와서 실행해도 안됨. 3번 출처에서 코랩 사본을 만들어서 코드를 실행하면 정상적으로 작동함.

  • 셀레니움 실행
    영상에서는 driver.find_element_by_css_selector('경로')와 driver.find_element(By. , '경로') 두 가지 방법을 설명하고, 첫 번째 방법을 주로 사용한다. 첫 번째 방법을 따라하니 AttributeError:'WebDriver' object has no attribute 'find_element_by_css_selector'라는 에러 메세지가 뜬다. 4번 출처에서 이유를 알았고, 두 번째 방법으로 코드 수정을 하면 정상 작동한다.

    from selenium.webdriver.common.by import By
    driver.find_element(By.CSS_SELECTOR, '')
    driver.find_element(By.XPATH, '')
    driver.find_element(By.NAME, '')
    driver.find_element(By.CLASS_NAME, '')
    driver.find_element(By.LINK_TEXT, '')
    driver.find_element(By.ID, '')

진도

  • ⭕ 반복문 코드를 돌리면 전체 스크래핑이 잘 작동
  • ⭕ 함수 코드를 돌리면 한 개 기사 스크래핑이 잘 작동, 데이터프레임화 작동
  • ❌ 전체 스크래핑을 데이터프레임화 하는 것 : 에러

📌 참고자료

  1. Selenium 기초 끝내기 - 셀레니움과 웹 드라이버 설치부터 웹사이트 스크래핑 따라하기 (https://youtu.be/dDEESB4Iw8g)
  2. WebDriverException 에러 : https://blog.naver.com/blue_bigdata/222992793244
  3. WebDriverException 에러 코랩 코드 출처 : https://pgh268400.tistory.com/286
  4. find element 메소드 : https://startcoding0.tistory.com/entry/%EC%85%80%EB%A0%88%EB%8B%88%EC%9B%80-%EC%98%A4%EB%A5%98-AttributeError-WebDriver-object-has-no-attribute-findelementbycssselectorxpath-classname-id-linktext-%ED%95%B4%EA%B2%B0%EB%B0%A9%EB%B2%95

댓글