멋쟁이사자처럼 13기/TIL 챌린지

멋쟁이사자처럼 후기 + 일은 간편해지고 수익은 성장하는 자동화 스킬 : 파이썬부터 Chat GPT 까지

개발자 지망생 리네 2025. 5. 15. 23:58

📆 DAY38

4. 까다로운 사이트에서의 웹 크롤링
(1) Daum 사이트 이메일 수집 - 2

 

- 아래는 수정 중인 코드

from selenium import webdriver
import time
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

options = webdriver.ChromeOptions()
options.add_experimental_option("detach", True)
browser = webdriver.Chrome(options=options)
browser.get("https://accounts.kakao.com/login/?continue=https%3A%2F%2Flogins.daum.net%2Faccounts%2Fksso.do%3Frescue%3Dtrue%26url%3Dhttps%253A%252F%252Fwww.daum.net#login")

# 로그인하기
id = browser.find_element(By.CSS_SELECTOR, "input#loginId--1.tf_g")
id.send_keys("")
pw = browser.find_element(By.CSS_SELECTOR, "input#password--2.tf_g")
pw.send_keys("")
button = browser.find_element(By.CSS_SELECTOR, "button.btn_g.highlight.submit")
button.click()

time.sleep(80)  # 로그인 기다리기
browser.get("https://mail.daum.net/top/INBOX")
time.sleep(2)  # 메일함 로딩 기다리기

current_page_num = 1

while True:
    title = browser.find_elements(By.CSS_SELECTOR, "strong.tit_subject")
    for i in title:
        print(i.text)

    current_page_num += 1
    page_numbers = browser.find_elements(By.CSS_SELECTOR, "a.link_page")

    for i in page_numbers:
        if i.text.isdigit() and int(i.text) == current_page_num:
            i.click()
            time.sleep(1)
            break
    else:
        try:
            next_button = WebDriverWait(browser, 5).until(
                EC.element_to_be_clickable((By.CSS_SELECTOR, "a.btn_page"))
            )
            next_button.click()
            time.sleep(1)
        except:
            print("더 이상 다음 페이지 없음")
            break

 

더 알고 싶은 점

이전에는 보안 정책이 그렇게 까다롭지 않아서 인증번호를 입력하지 않아도 괜찮았던 걸까.

-> 카카오 보안 정책이 업데이트 되었던 것을 확인했다.

https://developers.kakao.com/docs/latest/en/getting-started/security-guideline

 

Kakao Developers

Develop various applications using Kakao API. It provides Kakao Login, Send Message, Friend API, AI API, etc.

developers.kakao.com

 

 

느낀 점

아직도 에러를 찾고 있다. 이제는 수두룩한 빨간 에러는 전부 잡았는데, 아직 크롤링은 시작하지도 않았음에도 프로세스가 자꾸 종료되고 있어서 이 점에 대해서 해결방안을 서치해보는 중이다. 이전에는 sleep을 2로 설정해두어서, 인증번호를 입력하지 않아 로그인이 되지 않았음에도 빨리 종료되었던 것이 원인이었으며, 현재 html 코드가 달라져서 수정해야했다. 그 에러는 해결하였으나 프로세스가 종료되는 문제는 알아보아야할 것 같다.