ch11 Selenium 소개 및 시작

💡 이번 차시의 학습목표

✔ 크롤링 개념

✔ Selenium 소개 및 사용방법

✔ Selenium 시작하기

01. 크롤링이란

  1. 웹 크롤러가 하는 작업
  2. 웹 크롤러란?
    1. 조직적, 자동화된 방법으로 월드 와이드 웹을 탐색하는 컴퓨터 프로그램 (위키백과)
  3. 특정 웹사이트 또는 여러 웹사이트의 정보를 수집하는데 사용됨.
  4. 일종의 스크랩

02. 크롤링의 종류 및 특징

  1. 정적 크롤링
    1. 브라우저를 통해 특정 페이지에 접속한 이후 보이는 내용만 크롤링
    2. 한 페이지에 열린 내용만 가져오기 때문에 속도가 빠름
    3. BeautifulSoup
  2. 동적 크롤링
    1. 입력, 클릭, 스크롤 등 움직임을 통해 웹페이지를 이용하면서 바뀌는 내용을 지속적으로 크롤링
    2. 다양한 데이터를 가져올 수 있지만 상대적으로 속도가 느림
    3. Selenium
  3. 동적 크롤링 vs 정적 크롤링 비교

정적크롤링 동적크롤링

접근성 정해진 주소를 통해 일회성 접근 브라우저를 사용하여 주소 또는 페이지 이동 가능
크롤링 범위 열려있는 내용만 수집 가능 클릭, 텍스트 입력 등 동적인 활동이 가능하기 때문에 범위에 한계는 없음
속도 빠름 느림

03. Selenium 이란

  1. 웹 브라우저를 자동화하여 사용하기 위한 툴
  2. 특정 웹 주소에 접속하고 클릭, 텍스트입력, 스크롤 등 사용자가 브라우저에서 사용할 수 있는 대부분의 동작을 프로그래밍으로 지원
  3. 무료로 사용가능한 라이브러리
  4. 지원언어
    1. Python, Java, C#, Javascript, Kotlin 등 다양한 언어 지원
  5. 공식 홈페이지
  6. 🌐 https://www.selenium.dev/
  7. Selenium 시작하기
    1. 시작하기 전에 파이썬(3.8.10), 크롬브라우저, Visual Studio Code는 반드시 설치되어 있어야 합니다.
    2. selenium 모듈 설치 (필수)
      1. 터미널에서 pip 를 이용하여 selenium 설치
      2. pip install selenium
    3. 브라우저 제어를 위한 webdriver 사용
      1. from selenium import webdriver

04. 실습 예제

  1. selenium으로 구글 홈페이지 접속해보기
ex01_selenium.py

# 브라우저(크롬) 실행
driver = webdriver.Chrome()
# 주소 입력(구글 홈페이지)
driver.get("https://www.google.com")

 

 

ch12 Selenium 기본 사용법 - find_element

💡 이번 차시의 학습목표

✔ Selenium으로 웹페이지의 요소 가져오기

✔ find_element(), find_elements() 사용하기

01. selenium으로 웹페이지의 요소를 가져오기

✅selenium은 html의 다양한 요소에 접근할 수 있는 method를 제공함

✅해당 페이지의 id, class, 태그, css 선택자 등 거의 모든 요소에 접근 가능

✅요소에 접근하여 해당 요소의 속성, text 값 등을 가져올 수 있음

02. 요소에 접근할 때 사용하는 주요 method

  1. find_element()
    1. 해당 요소(id, class, tag 등) 하나를 가져옴
    2. 똑같은 요소가 여러 개라면 첫 번째 요소만 가져옴
  2. find_elements()
    1. 똑같은 요소가 여러 개일 때 해당 요소를 모두 가져옴
    2. python list 타입으로 가져올 수 있음

03. find_element() method

  1. from selenium.webdriver.common.by import By 를 작성해야함
  2. 태그 요소 가져오기
    1. find_element(By.TAG_NAME, ‘태그이름’)
    2. ex) div 태그 가져오기
      1. find_element(By.TAG_NAME, ‘div’)
  3. id 요소 가져오기
    1. find_element(By.ID, ‘id name’)
    2. ex) id가 main 인 요소 가져오기
      1. find_element(By.ID, ‘main’)
  4. class 요소 가져오기
    1. find_element(By.CLASS_NAME, ‘class name’)
    2. class는 여러 개의 태그에 적용되는 경우가 대부분이기 때문에 특정 class요소를 가져오는 경우에는 find_elements 쓰는 것을 권장
    3. ex) class가 btn 인 요소 가져오기
      1. find_element(By.CLASS_NAME, ‘btn’)
  5. css selector로 요소 가져오기
    1. find_element(By.CSS_SELECTOR, ‘선택자 문법’)
    2. ex) input 태그의 name이 username인 요소 가져오기
      1. find_element(By.CSS_SELECTOR, ‘[name=”username”]’)

03. find_elements() method

  1. 사용법은 find_element와 동일함
  2. list 타입으로 값을 리턴하기 때문에 반복문으로 접근하여 사용

04. 실습 예제 - 많이 활용되는 라이브러리 연습하기

📥실습 코드

  1. 태그 요소 가져오기
    ex01_tag_01.py
    
    driver = webdriver.Chrome()
    driver.get("https://www.example.com")
    # p 태그 요소 가져오기
    p_element = driver.find_element(By.TAG_NAME, 'p')
    print(p_element)
    # 텍스트만 출력
    print(p_element.text)
  2. p태그 요소 모두 가져와서 출력하기
    ex01_tag_02.py
    
    # p 태그 요소 모두 가져오기 
    p_elements = driver.find_elements(By.TAG_NAME, 'p')
    print(p_elements)
    
    # p_elements의 타입 확인
    print(type(p_elements))
    for p in p_elements:
        print(p)
        print(p.text)

  3. id 요소 접근하기
    ex02_id.py
    
    driver = webdriver.Chrome()
    driver.get("https://www.python.org/")
    id_element = driver.find_element(By.ID, 'site-map')
    print(id_element)
    print(id_element.text)

  4. class 요소 접근하기
    ex03_class.py
    
    driver.get("https://www.python.org/")
    class_element = driver.find_elements(By.CLASS_NAME, 'main-content')
    for c in class_element:
        print(c.text)

 

ch13 Selenium 기본 사용법 - 요소 접근하기

💡 이번 차시의 학습목표

✔ xpath로 요소 접근하기

✔ selenium으로 키입력, 클릭 등 동적 제어하기

 

01. xpath

  1. W3C 표준으로 문서의 구조를 통해 경로 위에 지정한 구문을 사용하여 항목을 배치하고 처리하는 방법을 기술하는 언어(위키백과)
    1. W3C(World Wide Web Consortium): 웹 표준, 웹 가이드라인 등을 개발하는 국제 컨소시엄
  2. xml 문장 속의 요소, 속성 등을 지정하기 위한 언어
  3. html도 xml의 일종이기 때문에 xpath로 해당 요소에 접근하는 것이 가능함
  4. 브라우저의 개발자 도구에서도 xpath를 복사하는 기능 제공

02. example.com에서 xpath 확인해보기

  1. 브라우저에서 🌐example.com 접속
  2. F12눌러서 개발자도구 열기
    1. 또는 아래 그림처럼 메뉴에서 접근 가능
  3. h1태그 요소 접근하여 xpath 복사하기
      1. 해당요소에서 우클릭 후 Copy → Copy Xpath 클릭하면 해당 요소의 xpath를 복사할 수 있음
      2. 복사한 xpath: /html/body/div/h1

03. selenium 동작 제어 method

  1. find_element로 가져온 요소 클릭하기
  2. ✅ driver.find_element(By.XPATH, ‘xpath값’).click()
  3. find_element로 가져온 요소에 값 작성하기✅ driver.find_element(By.XPATH, ‘xpath값’).send_keys(”입력값”)
  4. ✅ input 요소에 접근을 한 뒤 send_keys() 로 입력할 값 전달

04. 실습 예제

  1. 네이버 홈페이지에 접속하여 로그인 버튼 클릭
    1. 🔍네이버 홈페이지 접속
      driver.get("<https://www.naver.com>")​
    2. 로그인버튼 요소 가져오기
      1. 개발자도구로 로그인 버튼 요소 확인 후 xpath 복사
        # 영상에서의 코드 
        login_button = driver.find_element(By.XPATH, '//*[@id="account"]/a')
        
        # 수정된 코드 
        login_button = driver.find_element(By.XPATH, '//*[@id="account"]/div/a')
        
    3. 로그인버튼 클릭
      login_button.click()
  2. 네이버 검색창에 파이썬 이라 입력하고 검색버튼 클릭
    1. 🔍네이버 홈페이지 접속
      driver.get("<https://www.naver.com>")​​
    2. 검색창 요소 가져오기
      1. 개발자도구로 검색창 요소 확인 후 xpath 복사
        search = driver.find_element(By.XPATH, '//*[@id="query"]')
    3. 검색어 입력
      search.send_keys("파이썬")
    4. 검색버튼 요소 가져오기
      # 영상에서의 코드 
      search_button = driver.find_element(By.XPATH, '//*[@id="search_btn"]')
      
      # 수정된 코드 
      search_button = driver.find_element(By.XPATH, '//*[@id="search-btn"]')
      
    5. 검색버튼 클릭
      search_button.click()

 

'Python' 카테고리의 다른 글

[Python] 유튜브 크롤링(2)  (0) 2024.03.20
[Python] 유튜브 크롤링(1)  (0) 2024.03.19
[Python] 패키지 설치 및 numpy, matplotlib 기초  (0) 2024.03.15
[Python] 함수와 모듈  (0) 2024.03.11
[Python] 조건문과 반복문  (0) 2024.03.08

+ Recent posts