티스토리 뷰

반응형

🚀 Selenium을 이용한 웹 자동화 프로젝트 예제

Selenium을 활용하면 단순한 웹 크롤링뿐만 아니라, **웹 자동화(Web Automation)**까지 가능해집니다.
예를 들어, 로그인 자동화, 자동 게시물 작성, 자동 폼 입력 및 제출 등의 작업을 수행할 수 있습니다.


1. Selenium 웹 자동화의 핵심 기능

기능 설명

브라우저 자동 실행 Chrome, Firefox 등 제어
로그인 자동화 send_keys()를 활용한 폼 입력
버튼 클릭 click() 메서드 사용
자동 스크롤 execute_script() 사용
파일 업로드 send_keys("파일경로") 활용
데이터 저장 CSV, Excel, JSON 형식으로 저장

2. 프로젝트 1: 자동 로그인 (네이버 예제)

네이버에 자동으로 로그인하고, 마이페이지로 이동하는 Selenium 자동화 예제입니다.

📌 사용 기술:

  • Selenium을 사용하여 자동 로그인
  • send_keys()로 아이디 및 비밀번호 입력
  • click()으로 로그인 버튼 클릭
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
import time

# 1️⃣ Chrome 드라이버 실행
driver = webdriver.Chrome()

# 2️⃣ 네이버 로그인 페이지 이동
driver.get("https://nid.naver.com/nidlogin.login")

time.sleep(2)  # 페이지 로딩 대기

# 3️⃣ 아이디, 비밀번호 입력
driver.find_element(By.ID, "id").send_keys("your_username")  # 네이버 아이디 입력
driver.find_element(By.ID, "pw").send_keys("your_password")  # 비밀번호 입력

# 4️⃣ 로그인 버튼 클릭
driver.find_element(By.ID, "log.login").click()

# 5️⃣ 마이페이지로 이동
time.sleep(3)  # 로그인 처리 시간 대기
driver.get("https://my.naver.com")

print("로그인 성공!")
driver.quit()

🔹 설명

  • send_keys("입력값") : 입력창에 텍스트 입력
  • click() : 버튼 클릭
  • time.sleep(3) : 페이지 로딩을 고려하여 대기 (네트워크 속도에 따라 조정)

🟢 Tip:

  • 자동 로그인 시, 2단계 인증이 활성화된 계정은 Selenium만으로 로그인 불가능.
  • 로그인 정보를 보안 저장하려면 .env 파일 또는 config.json을 사용하는 것이 좋음.

3. 프로젝트 2: 자동 게시글 작성 (구글 폼)

이 프로젝트에서는 구글 폼에 자동으로 응답을 입력하고 제출하는 자동화를 구현합니다.

📌 사용 기술:

  • send_keys()로 텍스트 입력
  • click()으로 버튼 조작

🎯 자동 입력할 구글 폼 예제 링크

👉 구글 폼 예제

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

# 1️⃣ 브라우저 실행
driver = webdriver.Chrome()
driver.get("https://docs.google.com/forms/d/e/1FAIpQLScM6uM1hK5O7qQ3iLWTc9GQJ_fA/viewform")

time.sleep(2)  # 페이지 로딩 대기

# 2️⃣ 첫 번째 질문 입력 (예제: 이름 입력)
name_input = driver.find_element(By.XPATH, "//input[@type='text']")
name_input.send_keys("홍길동")

# 3️⃣ 두 번째 질문 입력 (예제: 이메일)
email_input = driver.find_element(By.XPATH, "//input[@type='email']")
email_input.send_keys("test@example.com")

# 4️⃣ 제출 버튼 클릭
submit_button = driver.find_element(By.XPATH, "//span[text()='제출']")
submit_button.click()

print("자동 입력 및 제출 완료!")
driver.quit()

🔹 설명

  • find_element(By.XPATH, "//input[@type='text']") : 텍스트 입력 필드 찾기
  • send_keys("홍길동") : 입력 필드에 자동 입력
  • click() : 제출 버튼 클릭

🟢 Tip:

  • XPATH를 활용하면 버튼이나 입력 필드를 더 정확하게 선택 가능.
  • 특정 버튼이나 요소가 로딩되기 전에 조작하면 오류가 발생할 수 있으므로, time.sleep()을 적절히 사용해야 함.

4. 프로젝트 3: 자동 댓글 작성 (인스타그램)

인스타그램 게시물에 자동으로 댓글을 작성하는 Selenium 자동화 예제입니다.

📌 사용 기술:

  • send_keys()로 댓글 입력
  • click()으로 댓글 게시
from selenium import webdriver
from selenium.webdriver.common.by import By
import time

# 1️⃣ 인스타그램 로그인
driver = webdriver.Chrome()
driver.get("https://www.instagram.com/accounts/login/")

time.sleep(3)  # 페이지 로딩 대기

# 2️⃣ 로그인 정보 입력
driver.find_element(By.NAME, "username").send_keys("your_username")
driver.find_element(By.NAME, "password").send_keys("your_password")
driver.find_element(By.XPATH, "//button[@type='submit']").click()

time.sleep(5)  # 로그인 대기

# 3️⃣ 특정 게시물 이동
post_url = "https://www.instagram.com/p/POST_ID/"
driver.get(post_url)

time.sleep(3)  # 페이지 로딩 대기

# 4️⃣ 댓글 입력 및 게시
comment_box = driver.find_element(By.XPATH, "//textarea")
comment_box.send_keys("멋진 사진이네요! 😊")

submit_button = driver.find_element(By.XPATH, "//button[@type='submit']")
submit_button.click()

print("댓글 작성 완료!")
driver.quit()

🔹 설명

  • send_keys("댓글 내용") : 댓글 자동 입력
  • click() : 댓글 게시 버튼 클릭

🟢 Tip:

  • 인스타그램은 자동화 탐지 시스템이 있으므로, 너무 빠르게 반복하면 계정이 차단될 수 있음.
  • time.sleep(3~5) 같은 대기 시간을 랜덤하게 설정하는 것이 중요.

5. 웹 자동화 심화 기법

🔹 (1) 파일 업로드 자동화

파일 업로드 버튼이 <input type="file">인 경우, send_keys()를 이용하여 자동으로 파일을 업로드할 수 있습니다.

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

driver = webdriver.Chrome()
driver.get("https://example.com/upload")

# 파일 업로드 버튼 찾기
file_input = driver.find_element(By.NAME, "file")
file_input.send_keys("C:\\Users\\User\\Documents\\test.jpg")  # 파일 경로 입력

print("파일 업로드 완료!")
driver.quit()

🔹 (2) 스크롤 자동화 (무한 스크롤)

SNS 사이트(예: 트위터, 인스타그램)에서 스크롤을 자동으로 내리면서 데이터 크롤링할 때 유용합니다.

import time
from selenium import webdriver

driver = webdriver.Chrome()
driver.get("https://example.com")

# 5번 스크롤 내리기
for i in range(5):
    driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
    time.sleep(2)  # 로딩 대기

print("스크롤 완료!")
driver.quit()

6. 정리

프로젝트 기능

자동 로그인 네이버 로그인 후 마이페이지 이동
자동 폼 작성 구글 폼 자동 입력 및 제출
자동 댓글 작성 인스타그램 댓글 자동 입력
파일 업로드 send_keys("파일 경로") 활용
스크롤 자동화 execute_script() 활용

Selenium을 활용하면 로그인 자동화, 매크로, 데이터 입력 자동화 등을 쉽게 구현할 수 있습니다.


 

반응형