Contents

[TIL] 힙한취미코딩! 파이썬 혼자놀기 패키지 2주차 개발일지

[TIL] 힙한취미코딩! 파이썬 혼자놀기 패키지 2주차 개발일지

스파르타코딩클럽에서
파이썬 혼자놀기 패키지가 있어서 2주차를 들어보았다!

오늘의 목표

아래처럼 썸네일을 포함해 기사를 크롤링해서 자신에게 메일 보내기!

사용 모듈!

사용 모듈은 아래와 같다.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# 이메일 관련 모듈
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.base import MIMEBase
from email.mime.text import MIMEText
from email import encoders

# 크롤링 및 엑셀 변환 모듈
from openpyxl import Workbook
from bs4 import BeautifulSoup
from selenium import webdriver

모듈의 쓰임을 간단하게 살펴보면,
이메일 관련이기 때문에 smtplib를 사용하는 걸 알 수 있고

openpyxl은 py -> xlsx 관련 모듈임을 알 수 있다. webdriver과 BeautifulSoup을 통해 크롤링함을 알 수 있다.

방법

엑셀 파일 만들어보기!

네이버로 추석을 검색하고
그 부분의 코드를 보면 경로를 알 수 있다.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
articles = soup.select('#main_pack > section.sc_new.sp_nnews._prs_nws > div > div.group_news > ul > li')

wb = Workbook()
ws1 = wb.active
ws1.title = "articles"
ws1.append(["제목", "링크", "신문사"])

for article in articles:
    title = article.select_one('div.news_area > a').text
    url = article.select_one('div.news_area > a')['href']
    comp = article.select_one('a.info.press').text.split(' ')[0].replace('언론사', '')

    ws1.append([title, url, comp, thumbnail])

driver.quit()
wb.save(filename='articles.xlsx')

그래서 엑셀 부분 컬럼명을 ‘[“제목”, “링크”, “신문사”, “썸네일”]‘으로 잡아놓고
articles를 돌면서 title, url, comp를 뽑아옴을 알 수 있다!

메일 보내보기!

smtplib 라이브러리를 사용해서 로그인을 하고
받는 사람 정보, 메일 기본 정보, 내용을 설정해준다.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# 로그인하기
s = smtplib.SMTP_SSL('smtp.gmail.com')
s.login(me, my_password)

# 받는 사람 정보
emails = ['my@email.com']

# ... 생략

# 메일 보내고 서버 끄기
s.sendmail(me, you, msg.as_string())

위의 코드처럼 해서 메일이 보내짐을 확인했다! (‘‘안에 있는 내용은 각자 넣어주어야 한다!)

후기

기사 크롤링이 좀 까다로웠는데,
혼자 계속 고민해보고 해결해볼 수 있어서 좋았다.

게다가 xlsx 파일로도 변환해보고
메일로도 보내보는 경험이 흔하진 않은데
이번 경험으로 한번 해봐서 즐거웠다!