커뮤니티
포인트
쿠폰
내 강의실
국비 신청 내역
증명서
계정
로그아웃
학습 질문
개발 일지
나의 활동
답변 완료
이메일에 이미지가 안 들어갑니다.
[왕초보] 칼퇴를 부르는 파이썬 업무 자동화
4주차
북마크
엄*용
댓글
1
추천
0
조회수
11
조회수
11
답변 완료

* 겪고 있는 문제 상황을 최대한 자세하게 작성해주세요.

* 문제 해결을 위해 어떤 시도를 해보았는지 구체적으로 함께 알려주세요.



이미지가 안들어갑니다.



스파르타 즉문즉답



from selenium import webdriver

from selenium.webdriver.common.by import By

from selenium.webdriver.common.keys import Keys

from selenium.webdriver.chrome.options import Options

import time

from smtplib import SMTP_SSL

from email.message import EmailMessage

from email.mime.multipart import MIMEMultipart

from email.mime.text import MIMEText



# Chrome 옵션 설정

chrome_options = Options()

chrome_options.add_experimental_option("detach", True) # 브라우저 자동 종료 방지

chrome_options.add_experimental_option("excludeSwitches", ["enable-logging"]) # 불필요한 로그 제거

driver = webdriver.Chrome(options=chrome_options)


# 웹 사이트 열기

driver.get('https://news.google.com')

time.sleep(2)


driver.maximize_window() # 창 최대화

time.sleep(2)


# Ax4B8 검색창 가져올 때 사용할 Class

# JtKRv 뉴스 목록 가져올 때 사용할 Class


SEARCH_KEYWORD = '전기자동차'


try:

# 올바른 방식으로 검색창 찾기

search_bar = driver.find_element(By.CLASS_NAME, 'Ax4B8') # 첫 번째 클래스명만 사용

search_bar.click()

search_bar.send_keys(SEARCH_KEYWORD)

search_bar.send_keys(Keys.ENTER)


time.sleep(4)

except Exception as e:

print(f"에러 발생: {e}")


# 스크롤

before_h = driver.execute_script("return window.scrollY")

while True:

driver.find_element(By.CSS_SELECTOR, "body").send_keys(Keys.END)

time.sleep(1)

after_h = driver.execute_script("return window.scrollY")

if after_h == before_h:

break

before_h = after_h


data_list = []


article_list = driver.find_elements(By.CSS_SELECTOR, '.JtKRv')


for article in article_list:

title = article.text

link = article.get_attribute('href')


data_dict = {'title': title, 'link': link}

data_list.append(data_dict)

print(title)


print(data_list)



# 이메일 메시지 설정

msg = MIMEMultipart()

msg['Subject'] = f'오늘의 {SEARCH_KEYWORD} 뉴스'

msg['From'] = 'djatjddyd21@gmail.com'

msg['To'] = 'djatjddyd21@gmail.com'


# 이메일 본문 작성

email_body = ""

email_body += "<br>"

email_body += f"<h2>오늘의 {SEARCH_KEYWORD} 뉴스</h2>"

email_body += "<br>"

email_body += "<div><img scr='https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTtTYaJdFDVJkRiFeZ21BeqpItAwXzUwDb4intgyXFlX-dpKHRQd08413jxMGyJcZtnc5U&usqp=CAU'></div>"


for i in range(len(data_list)):

title = data_list[i]['title']

link = data_list[i]['link']

email_body += f"<p><a href:'{link}'>{title}</a></p>"


msg.attach(MIMEText(email_body, "html"))


# SMTP 설정 및 이메일 전송

with SMTP_SSL('smtp.gmail.com', 465) as smtp:

smtp.login('djatjddyd21@gmail.com', 'nvwn ahkl uavs klzy')

smtp.send_message(msg)


print("성공!")


# 브라우저 종료

driver.quit()



취소
 공유
취소
댓글 0
댓글 알림
나의얼굴