[Python] 크롤링 - Selenium

0ㅑ채
|2024. 2. 14. 12:55

1. 개요

- 웹 앱을 테스트하는데 사용하는 프레임워크

- WebDriver 라는 API를 이용해서 운영체제에 설치된 브라우저를 제어하는 프레임워크

- 크롤링을 할 때 JavaScript를 이용해서 비동기적으로 가져오는 데이터를 읽고자 할 때 이용할 수 있고 로그인 후 가져와야 하는 데이터를 읽어오는데 사용합니다.

 

메뉴얼: http://docs.seleniumhq.org/docs/

 

- 파이썬에서 사용 준비

pip install selenium
  • 브라우저의 드라이버가 필요
  •  크롬의 버전을 확인

https://googlechromelabs.github.io/chrome-for-testing/#stable

 

2. 크롬 브라우저 실행

1) 기본 API

- 접속: get(url)

- html 코드 읽어오기: page_source

- 일정 시간 대기: implicitly_wait(시간)

- 브라우저 종료: quit()

- 카카오 접속

from selenium import webdriver
import os

os.environ['webdriver.chrome.driver'] = '크롬드라이버 경로'
while(True):
	pass
#사이트 접속
driver.get("https://www.kakao.com")
#html 읽어오기
html = driver.page_source
print(html)
while(True):
	pass

 

2) element 접근 API

- 하나만 찾는 API

find_element_by_name(이름)
find_element_by_id(아이디)
find_element_by_xpath(xpath)

 

- 배열로 찾는 API

find_element_by_css_selector(선택자)
find_element_by_css_class_name(클래스 이름)
find_element_by_tag_name(태그)

 

3) Element 동작 API

send_keys(값): 값이 입력됨
click(), submit(): 클릭

 

4) 스크립트 실행

execute_script(스크립트 코드)

 

5) 유튜브 스크롤

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
import bs4
import os
import time

#드라이버 경로 설정
os.environ['webdriver.chrome.driver'] = 'C:\\Users\\USER\\Downloads\\chromedriver-win64\\chromedriver-win64\\chromedriver'
driver = webdriver.Chrome()
#사이트 접속
driver.get("https://www.youtube.com/results?search_query=%EB%8B%B9%EA%B7%BC%20%ED%9B%84%EA%B8%B0")
#5초 대기
time.sleep(5)

i = 0

body = driver.find_element(By.TAG_NAME, 'body')
while i < 10:
    body.send_keys(Keys.PAGE_DOWN)
    time.sleep(2)
    i = i + 1

#html 읽어오기
html = driver.page_source
print(html)
while(True):
	pass

 


6) 네이버 로그인

  • 아이디 와 비밀번호를 입력했을 때 capture 가 보이는 경우는 입력을 직접하지 않고 자바스크립트를 이용하면 보이지 않을 것
from selenium import webdriver
from selenium.webdriver.common.by import By
import os

#드라이버 경로 설정
os.environ['webdriver.chrome.driver'] = 'C:\\Users\\USER\\Downloads\\chromedriver-win64\\chromedriver-win64\\chromedriver'
driver = webdriver.Chrome()
#사이트 접속
driver.get("https://nid.naver.com/nidlogin.login")
#5초간 대기
driver.implicitly_wait(5)

#userid 와 password 에 아이디와 비밀번호를 직접 입력하면 자동 로그인이 됩니다.
userid = input("아이디")
password = input("비밀번호")

driver.execute_script("document.getElementsByName('id')[0].value=\'" + userid + "\'")
driver.execute_script("document.getElementsByName('pw')[0].value=\'" + password + "\'")
driver.find_element(By.XPATH, '//*[@id="log.login"]').click()
while(True):
	pass

 

 

 

 

 

'Python' 카테고리의 다른 글

[Python] 데이터 탐색  (0) 2024.02.14
[Python] MySQL 데이터로 DataFrame 만들기  (0) 2024.02.14
[Python] 크롤링 - 기사 스크래핑  (0) 2024.02.14
[Python] Pandas  (1) 2024.02.08
[Python] Numpy  (0) 2024.02.06