본문 바로가기
파이썬

셀레니움(selenium) 자주쓰는 명령어 모음(python)

by fecu 2021. 9. 8.
728x90

파이썬 셀레니움을 이용할 때 유용한 명령어들을 모아봤다. 이 명령어들을 이용하면 웬만한 것들은 다 만들수 있다. 다만 xpath, class name 등의 웹 구조에 대한 기초적인 지식이 필요하다. 

셀레니움

 

Selenium

Selenium is an umbrella project for a range of tools and libraries that enable and support the automation of web browsers. - Selenium

github.com

 

1. 셀레니움 초기 실행

- import하기

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.common.exceptions import NoSuchElementException
import time
import random

 

- 셀레니움 옵션 추가(핸드폰 모드로 크롤링 할 때)

options = webdriver.ChromeOptions()

options.add_argument('--no-sandbox')
options.add_argument('--disable-dev-shm-usage')
options.add_argument("--user-agent=Mozilla/5.0 (iPhone; CPU iPhone OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A5376e Safari/8536.25")
options.add_argument("--start-maximized")

driver = webdriver.Chrome('chromedriver.exe', options=options)

 

- 드라이버 구동(크롬 웹 드라이버가 같은 폴더에 있을 경우, 다른 폴더에 있으면 주소 입력)

driver = webdriver.Chrome('chromedriver.exe')

 

2. 크롤링

- 원하는 사이트 접근

driver.get('접속을 원하는 사이트 url')

 

- 오류를 바로 내지않고 잠시 대기하기

driver.implicitly_wait(10)

 

- 요소를 찾고 마우스 왼쪽클릭(여기서는 태그네임)

btn = driver.find_elements_by_tag_name('태그 네임')
btn.click()

 

- 텍스트 입력 창에 키 전송(클레스 네임으로 찾고 글 입력 후 엔터 입력)

text = driver.find_elements_by_class_name('찾고자 하는 요소')
text.send_keys('타이핑을 원하는 글')
text.send_keys(Keys.ENTER)

 

- 새탭 열기(원하는 클레스네임 --> 클릭하여 새탭 열기 --> 새탭으로 전환)

target = driver.find_elements_by_class_name('찾는 클레스 네임')
target.send_keys(Keys.CONTROL +"\n")
driver.switch_to.window(driver.window_handles[1])

 

- 현재 탭 닫고 원래 탭으로 돌아오기

driver.close()
driver.switch_to.window(driver.window_handles[0])

 

- 현재창 새로고침

driver.refresh()

 

 

- 크롤링 오류시 재시도 하기(타겟을 찾아 클릭 --> 타겟이 없을 시 print 후 새로고침 무한반복)

from selenium.common.exceptions import NoSuchElementException
#반드시 오류명을 호출해주어야 함

while True:
	try :
    	target = driver.find_element_by_link_text('링크 명') 
		target.click()
		break
	except NoSuchElementException as n:
		print('링크를 찾을수 없습니다. 재시도합니다.')
		driver.refresh()

 

- 크롤링 속도를 램던으로 조절하고 싶을 때(3초~30초, 로봇으로 인식되고 싶지 않을때 유용)

time.sleep(random.randrange(3,30))

 

3. 셀레니움 종료

driver.quit()

 

4. 인스타 좋아요 프로그램 만들기

셀레니움을 활용하면 인스타에서 좋아요를 자동으로 눌러주는 프로그램을 만들 수 있다. 아래 글을 참고 바란다.

 

인스타그램 좋아요 봇 만들기(2022.02.19. 업데이트)

인스타그램을 공개로 하다 보면 가끔씩 내 피드에 들어와 글과 전혀 상관없는 댓글을 남기거나, 내 피드에 전혀 모르는 사람이 들어와 좋아요만 여러개 남기고 사라지는 사람들이 있는 것을 볼

fecu.tistory.com

 

728x90