스파르타 코딩 클럽: 파이썬 혼자놀기 패키지(추석)

Yesom Shin·2020년 10월 6일
0

첫째, 코딩과의 첫 만남

: 개인 홈페이지랑 비슷한 거 아닌가? 천만의 말씀

현 시국 상황을 고려하여 추석 연휴에는 가족들과 집에만 있기로 했다. 25일 Twitter SNS 게시글을 구경하며 흘러다니다 10월 1일부터 추석 기간에 걸쳐 스파르타 코딩 클럽에서 '파이썬 혼자놀기 패키지' 라는 이름을 내걸고 강의를 진행한다더라.

할 것도 없는데 도전? 개인 홈페이지 만드는 거랑 비슷한 거 아닌가? 제로보드4를 활용하여 야매독학으로 html 코드를 어느 정도 눈치껏 사용할 줄 알았기에 비슷한 이치인 줄 알았다. 어려워봤자 신기한 정도겠지. 가벼운 마음으로 신청했다. 순전히 재미추구만을 위한 선택! 유흥을 목적으로 안일하게 신청한 정말정말정말 찐! 쌩초짜의 코딩 여행. 시작합니다.



홈페이지 메인화면 - 내 강의실로 입장하면 귀여운 이모티콘이 날 반긴다. 정말 여기까지만 해도 즐거웠다.



둘째, 순한 맛·중간 맛·매운 맛 코딩

: 저는 순한 맛만 먹고 싶어요

연예인 이미지 검색해서 저장하기, 이메일 보내기, 워드 클라우드 이미지 편집. 이게 다 파이참이라는 프로그램 하나에서 가능한가? 의구심이 앞섰다.


<1일차> 좋아하는 연예인 사진 저장하기 결과물

지도 선생님께서는 아이유로 하셨지만, 난 다르게 해보고 싶어서 그냥 인물만 바꿨다. 7%의 사심을 담아 갓세븐 진영으로 선택했다. 처음엔 url을 함부로 변경해서 안되는 것 아닌가~ 했지만 폴더 안에 저장되어있는 것들을 확인하고 박수가 저절로 나왔다.

동시에 필요한 이미지를 하나하나 저장하면서 귀찮게 마우스 클릭을 몇 번이고 반복하던 과거가 생각났다. 이건 앞으로도 유용하게 사용할 수 있을 것 같다. 개인적으로 제일 마음에 들었던 회차.


driver = webdriver.Chrome('chromedriver')

url = "https://search.naver.com/search.naver?sm=top_hty&fbm=0&ie=utf8&query=%EA%B0%93%EC%84%B8%EB%B8%90+%EC%A7%84%EC%98%81"
driver.get(url)
req = driver.page_source
soup = BeautifulSoup(req, 'html.parser')

articles = soup.select('#main_pack > div.news.section._prs_nws_all > ul > li')

for article in articles:
    a_tag = article.select_one('dl > dt > a')

    title = a_tag.text
    url = a_tag['href']
    comp = article.select_one('dd.txt_inline > span._sp_each_source').text.split(' ')[0].replace('언론사','')
    thumbnail = article.select_one('div > a > img')['src']
    ws1.append([title,url,comp])
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.base import MIMEBase
from email.mime.text import MIMEText
from email import encoders


# 보내는 사람 정보
me = "내구글아이디@gmail.com"
my_password = "비번"

# 로그인하기
s = smtplib.SMTP_SSL('smtp.gmail.com')
s.login(me, my_password)

for you in emails:
you = "네이버가능@naver.com"


# 메일 기본 정보 설정
msg = MIMEMultipart('alternative')
msg['Subject'] = "제목 코딩과제"
msg['From'] = me
msg['To'] = you

# 메일 내용 쓰기
content = "추석 코딩 과제 하는 중"
part2 = MIMEText(content, 'plain')
msg.attach(part2)

part = MIMEBase('application', "octet-stream")
with open("articles.xlsx", 'rb') as file:
    part.set_payload(file.read())
encoders.encode_base64(part)
part.add_header('Content-Disposition', "attachment", filename="추석기사.xlsx")
msg.attach(part)

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

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

**코딩의 일부만 드래그 하였습니다. 정식 사용 불가능 합니다.**

<2일차> 기사 크롤링해서 자신에게 메일 보내기

코딩이 문제인건지 내 머리가 문제인건지 둘 중 하나의 문제는 확실한데 도대체 누가 문제인지 우열을 가릴 수가 없었다. 이 과제를 한다고 이틀을 소모했다. 코딩 강의를 들으면서 내가 한 거라곤 사실상 복사-붙여넣기를 포함해 선생님의 타이핑을 그대로 따라한 것 뿐이었음을 실감했다. 때론 지나친 다정함은 상대의 권태를 불러오는 법이다.

그래도 지성이면 감천이라고, 내 머리가 문제였다는 걸 깨닫기 까지는 하루밖에 안 걸렸다. 저와 같이 쌩초짜의 입장에서 코딩을 처음 만나고 계신 분들께 정말 말씀드리고 싶은 건, RUN으로 실행하시고 하단에서 결과를 꼭 확인하셔야 한다는 것입니다. 꼭 확인하세요. 전 확인안하고 RUN만 계속 누르면서 "프로그램이 반항한다!" 고 윽박질렀기 때문입니다.



<3일차> 카카오톡 기록을 이용한 워드 클라우드 만들기 결과물

  • 개인정보를 포함한 단어는 마스킹 처리 하였습니다


    카카오톡을 원체 사용하지 않아 회사의 직원 전용 사담 채팅방을 이용하였다. 구름 모양 안에 딱 맞게 들어가 있는 결과물을 보면서 전문가들이 해당 코딩을 활용해 연령대별 채팅방 기록을 가지고 시시각각 트렌드에 반영하고 있다는 것을 체감했다. 물론 해당 코딩보다 고차원적인 코딩을 활용할테지만, 이 코딩 또한 채팅방의 정체성을 파악하기엔 무리가 없어보인다.




코딩과 친해질 수 있을까

: 지속적인 관계를 위해 ~ 앞으로의 계획

우선 저와 함께 수업을 신청하셔서 완강하신 분께 박수 짝짝짝. 저는 문과였고, 대학에서도 공과대 근처로는 발걸음을 해 본 역사가 없는 인물이었습니다.
그런 제게 추석 기간 동안의 짧은 코딩 수업이 실제 우리의 생활에서 '아, 이거 수동식으로 하기 귀찮은데. 한 번에 촤라락 되면 얼마나 좋을까~' 하고 생각하게 하던 작업을 파이참이라는 프로그램 하나만으로 가능하다는 걸 보여주었습니다.

귀찮지 않았다고 한다면 거짓말이겠지만, 컴퓨터 앞에 앉기 전까지가 귀찮았을 뿐이지 강의를 켜면 거짓말 같이 손가락이 움직이는 마법같은 경험을 할 수 있었습니다.

이런 쾌감을 지속적으로 유지하기 위해서라도 코딩 개념 공부를 짬짬이 시작해보려고 합니다. 인터넷에서 우스갯소리로 '요즘엔 문과가 코딩하고 이과가 소설써서 책 출간한다.' 라고 말하는데 그게 아마 미래의 제가 될 수도 있지 않을까요?

새로운 견문을 넓혀준 스파르타 코딩 클럽에 진심으로 감사드립니다.



-2020.10.06, 마지막 강의를 완료하고 작성.

0개의 댓글