파이썬 python

라즈베리파이를 이용해 파이썬으로 자동 이메일 추출하기

smy383 2025. 3. 11. 00:21
728x90
반응형

 

라즈베리파이를 이용해  파이썬으로 자동 이메일 추출하기 📧

안녕하세요, 라즈베리파이를 사랑하는 개발자 여러분! 오늘은 라즈베리파이를 활용하여 조금은 색다른 프로젝트를 진행해 보려고 합니다. 바로 파이썬을 이용해 네이버 메일 주소를 자동 추출하는 방법인데요!

"굳이 왜...?" 라는 질문이 나올 수 있습니다. 하지만 이 과정을 통해 우리는 웹 스크래핑, 자동 로그인, 그리고 파이썬의 강력한 기능을 익힐 수 있습니다. 라즈베리파이를 이용해 나만의 자동화 도구를 만들어보는 재미를 느껴보세요!

⚠️ 주의: 이 튜토리얼은 교육 목적으로만 제공되며, 반드시 자신의 계정으로만 테스트하고, 악용하지 않도록 주의해주세요!

1. 준비물

  • 라즈베리파이 (어떤 모델이든 상관없습니다!)
  • 인터넷 연결
  • 파이썬 3 (기본적으로 설치되어 있습니다.)
  • 필요한 파이썬 라이브러리:
    • selenium: 웹 브라우저를 자동화하는 데 사용됩니다.
    • webdriver_manager: selenium을 사용하기 위한 웹 드라이버를 관리해줍니다.
    • bs4: HTML 및 XML 파일을 파싱하는 데 사용됩니다. (BeautifulSoup4)

라이브러리 설치 방법:

pip3 install selenium webdriver_manager beautifulsoup4

2. 개발 환경 설정

먼저 라즈베리파이에 SSH로 접속하거나, 라즈베리파이 OS의 터미널을 실행합니다. 그리고 위에 안내된 파이썬 라이브러리들을 설치해주세요.

3. 파이썬 코드 작성

이제 본격적으로 파이썬 코드를 작성해 보겠습니다. 아래 코드를 복사하여 naver_email_extractor.py라는 이름으로 저장해주세요.


from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from bs4 import BeautifulSoup
import time

# 네이버 로그인 정보
NAVER_ID = "YOUR_NAVER_ID"  # 여기에 네이버 아이디를 입력하세요.
NAVER_PW = "YOUR_NAVER_PASSWORD"  # 여기에 네이버 비밀번호를 입력하세요.

def extract_email():
    # Chrome 드라이버 설정
    service = Service(ChromeDriverManager().install())
    options = webdriver.ChromeOptions()
    options.add_argument("headless") # 브라우저 창을 숨깁니다.
    driver = webdriver.Chrome(service=service, options=options)

    # 네이버 로그인 페이지 접속
    driver.get("https://nid.naver.com/nidlogin.login")

    # 로그인 정보 입력 및 로그인
    driver.find_element(By.ID, "id").send_keys(NAVER_ID)
    driver.find_element(By.ID, "pw").send_keys(NAVER_PW)
    driver.find_element(By.ID, "log.login").click()

    # 로그인 완료 대기 (최대 10초)
    try:
        WebDriverWait(driver, 10).until(
            EC.presence_of_element_located((By.ID, "account"))
        )
    except:
        print("로그인 실패!")
        driver.quit()
        return None

    # 내 정보 페이지 접속
    driver.get("https://m.naver.com/my/profile/me")

    # 페이지 소스 가져오기
    html = driver.page_source
    soup = BeautifulSoup(html, 'html.parser')

    # 이메일 주소 추출
    email_element = soup.find("a", {"class": "link_email"})
    email = email_element.get_text(strip=True) if email_element else None

    # 드라이버 종료
    driver.quit()

    return email

if __name__ == "__main__":
    email_address = extract_email()
    if email_address:
        print(f"네이버 이메일 주소: {email_address}")
    else:
        print("이메일 주소를 찾을 수 없습니다.")
    

코드 설명:

  1. 필요한 라이브러리 import: selenium, webdriver_manager, bs4 라이브러리를 가져옵니다.
  2. 네이버 로그인 정보: NAVER_IDNAVER_PW 변수에 자신의 네이버 아이디와 비밀번호를 입력합니다. ⚠️ 주의: 절대로 다른 사람에게 노출하지 마세요!
  3. extract_email() 함수:
    • ChromeDriverManager를 사용하여 Chrome 드라이버를 자동으로 설치하고 설정합니다.
    • headless 옵션을 사용하여 브라우저 창을 숨기고 백그라운드에서 실행합니다.
    • driver.get() 함수를 사용하여 네이버 로그인 페이지에 접속합니다.
    • find_element() 함수를 사용하여 아이디와 비밀번호 입력 필드를 찾고, send_keys() 함수를 사용하여 로그인 정보를 입력합니다.
    • click() 함수를 사용하여 로그인 버튼을 클릭합니다.
    • WebDriverWait를 사용하여 로그인 완료를 기다립니다. (최대 10초)
    • driver.get() 함수를 사용하여 내 정보 페이지에 접속합니다.
    • page_source 속성을 사용하여 페이지 소스를 가져옵니다.
    • BeautifulSoup를 사용하여 HTML을 파싱합니다.
    • find() 함수를 사용하여 이메일 주소를 포함하는 HTML 요소를 찾고, get_text() 함수를 사용하여 이메일 주소를 추출합니다.
    • driver.quit() 함수를 사용하여 브라우저를 종료합니다.
    • 추출된 이메일 주소를 반환합니다.
  4. if __name__ == "__main__": 블록:
    • extract_email() 함수를 호출하여 이메일 주소를 추출합니다.
    • 추출된 이메일 주소를 출력합니다.

4. 코드 실행

터미널에서 다음 명령어를 입력하여 파이썬 코드를 실행합니다.

python3 naver_email_extractor.py

정상적으로 실행되면 터미널에 자신의 네이버 이메일 주소가 출력될 것입니다!

5. 추가 설명 및 개선 사항

  • 보안: 위 코드는 아이디와 비밀번호를 코드에 직접 입력하는 방식으로 보안에 취약합니다. 환경 변수를 사용하거나, 별도의 설정 파일에 저장하는 방법을 고려해보세요.
  • 에러 처리: 로그인 실패, 페이지 로딩 실패 등 다양한 예외 상황에 대한 에러 처리를 추가하여 코드의 안정성을 높일 수 있습니다.
  • 로그인 방식 변경: 네이버는 로그인 방식을 자주 변경합니다. 코드가 작동하지 않으면 웹 페이지 구조를 분석하여 코드를 수정해야 할 수 있습니다.
  • 자동 로그인 방지: 네이버는 자동 로그인을 감지하고 차단할 수 있습니다. time.sleep() 함수를 사용하여 코드 실행 속도를 늦추거나, User-Agent를 변경하는 등의 방법을 시도해볼 수 있습니다.

마무리

이번 튜토리얼에서는 라즈베리파이와 파이썬을 이용하여 네이버 이메일 주소를 자동 추출하는 방법을 알아보았습니다. 이 코드를 응용하여 다양한 웹 자동화 작업을 수행할 수 있습니다. 하지만 항상 윤리적인 책임감을 가지고, 타인에게 피해를 주는 행위는 삼가도록 합시다!

다음에는 더욱 흥미로운 라즈베리파이 프로젝트로 돌아오겠습니다. 궁금한 점이나 개선 사항이 있다면 언제든지 댓글로 문의해주세요!

728x90
반응형