반응형

 

파이썬 - 웹 크롤링, 동적 웹 데이터 수집 (selenium 사용법)

 

 

   목차

    1. 동적 웹 데이터 수집을 위한 selenium 사용법
    2. 태그 선택 및 조작 명령어
    3. selenium 사용예제
    4. 브라우저를 띄우지 않고 데이터 수집하기

 

 

1. 동적 웹 데이터 수집을 위한 selenium 사용법

 

동적 웹페이지의 데이터를 수집하기 위해서는 웹브라우저상의 동작을 자동화 할 수 있는 selenium 라이브러리를 사용합니다. 

 

1) selenium 설치방법

  • pip install selenium

 

2) selenium 동작확인 및 기초사용법

  • selenium 설치후 아래와 같이 코드를 실행하면 빈 웹브라우저 창이 나타납니다. 
from selenium import webdriver
driver = webdriver.Chrome()

 

 

  • 만약 위 명령어를 실행하였을 때, 웹 브라우저창이 안 뜨고 에러 발생시 아래와 같이 진행해주세요.
    1. 웹브라우저를 최신버전으로 업데이트 후 다시 시도해 봅니다.
    2. 그래도 안된다면 아래와 같이 webdriver-manager 설치후 아래의 코드를 실행해 보시기 바랍니다. 
      • webdriver-manager 설치 : pip install webdriver-manager
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager

service = Service(ChromeDriverManager().install())
driver = webdriver.Chrome(service=service)

 

 

3) 웹 브라우저 조작 명령어

  1. driver.get("https://www.naver.com") : 웹페이지 이동
  2. driver.page_source : 선택한 웹페이지 소스
  3. driver.implicitly_wait(sec) : 최대 대기시간 설정   [cf, 시간대기시 import time 후 time.sleep(1) 사용]
  4. dirver.set_window_size(800, 600) : 웹브라우저 창 크기 조절
  5. driver.execute_script("alert('안녕하세요');") : alert 창 띄우기
  6. driver.close() : 브라우저 닫기
  7. driver.quit() : 드라이버 종료 (브라우저 닫힘)
  8. 기타 등등

 

4) Chrome 드라이버 옵션

  1. options.add_argument('--start-maximized') : 브라우저 최대화
  2. options.add_argument('--window-size= 200, 300') : 브라우저 크기 지정
  3. options.add_argument('--start-fullscreen') : 브라우저 풀스크린모드(f11)
  4. options.add_argument('--blink-settings=imagesEnabled=false') : 브라우저에서 이미지 로딩 제거
  5. options.add_argument('--mute-audio') : 브라우저 음소거
  6. options.add_argument('incognito') : 브라우저 시크릿 모드 적용

 

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager

options = webdriver.ChromeOptions()                          #옵션추가
options.add_argument('--start-maximized')                    #옵션추가

service = Service(ChromeDriverManager().install())
driver = webdriver.Chrome(service=service, options=options)  #옵션추가

 

 

 

2. 태그선택 및 조작 명령어

 

selenium에서는 아래와 같이 두 가지 방식으로 내가 원하는 태그를 선택하여 명령어를 실행시킬 수 있습니다. 

 

 

1) CSS_SELECTOR로 태그 선택하기

from selenium.webdriver.common.by import By

driver.get("https://www.daum.net")
driver.find_element(By.CSS_SELECTOR, '#q').send_keys('파이썬')
driver.find_element(By.CSS_SELECTOR, '.inner_search > .ico_pctop.btn_search').click()

 

 

2) XPATH로 태그 선택하기

from selenium.webdriver.common.by import By
driver.find_element(By.XPATH, '//*[@id="q"]').send_keys('파이썬')
driver.find_element(By.XPATH, '//*[@id="daumSearch"]/fieldset/div/div/button[3]').click()

 

[실행결과]

 

 

3) .find_element 조작 명령어

  1. .clear( ) : 글자를 지웁니다.
  2. .click ( ) : 요소를 클릭합니다. 
  3. .get_attribute(name) : name 속성값 반환
  4. .is_displayed( ) : 해당 요소가 화면에 출력되는지 여부를 반환
  5. .is_enabled( ) : 해당 요소가 활성화 되어 있는지 여부를 반환
  6. .is_selected( ) : 해당 요 소가 선택된 상태인지 여부를 반환
  7. .screenshot(filename) : 화면을 캡쳐하여 저장
  8. .send_keys(value) : 키를 입력
  9. .submit( ) : 입력양식을 전송함
  10. .value_of_css_property(name) : name에 해당하는 css 속성값을 반환
  11. .id : id
  12. .location : 요소의 위치값 반환
  13. .parent : 부모요소
  14. .rect : 크기와 위치 정보 반환
  15. .screenshot_as_base64 : 스크린샷을 base64 로 반환
  16. .screentshot_as_png : 스크린샷을 png 형식으로 반환
  17. .size : 요소의 크기 반환
  18. .tag_name : 태그이름 반환
  19. .text : 해당 요소의 텍스트 내용 반환

 

 

 

3. selenium 사용예제

 

1) selenium 사용예제1

from selenium import webdriver
from selenium.webdriver.common.by import By

driver = webdriver.Chrome()
driver.get("https://www.daum.net")
driver.find_element(By.CSS_SELECTOR, '#q').send_keys('파이썬')
driver.find_element(By.CSS_SELECTOR, '.inner_search > .ico_pctop.btn_search').click()

items = driver.find_elements(By.CSS_SELECTOR, 'a.keyword')
for item in items:
    print(item.text)

  

 

2) selenium 사용예제2 (브라우저를 화면에 띄우지 않고 데이터 수집하는 방법)

  • webdriver-manager 설치 : pip install webdriver-manager
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager

options = webdriver.ChromeOptions()
options.add_argument('headless')

service = Service(ChromeDriverManager().install())
driver = webdriver.Chrome(service=service, options=options)

driver.get('https://www.daum.net')
driver.find_element(By.CSS_SELECTOR, '#q').send_keys('파이썬')
driver.find_element(By.CSS_SELECTOR, '.inner_search > .ico_pctop.btn_search').click()

items = driver.find_elements(By.CSS_SELECTOR, 'a.keyword')
for item in items:
    print(item.text)

 

 

[실행결과]

파이썬 프로그래밍
파이썬 기초
파이썬 다운로드
파이썬 뱀
파이썬 코딩
파이썬 강좌
파이썬 설치
파이썬 책
파이썬 자격증
파일썬
python
파이썬 활용

 

반응형
반응형

+ Recent posts