TIL/멋사_AI스쿨_TIL

220917 AI스쿨 TIL

둥둥런 2022. 9. 21. 23:16

TIL 3일차 - python 심화 테킷 강의

오늘은 파이썬 문법 심화 강의를 들었다.
처음보는 용어도 많고 프로그램 만들기 수준이 급 상승하여 이해하기 힘들었다.

오후엔 영혼을 겨우 붙잡고 있었다.
다행인건(?) 어떤 부분이 어려웠는지 회고 시간에 팀원분들과 공유할 수 있어서
'이 부분이 나만 어려웠던 건 아니구나'하고 위안이 되기도 했다.

일주일이 지나고 밀린 TIL을 정리하면서 되돌아보니 이 날의 난이도는 낯선 용어에 빨리 익숙해지고,

가볍게라도 이해시키기 위한 큰 그림이란 것을 알게 되었다.

예를 들어 API도 처음 들어봤지만 이 날 경험해봤기 때문에,

다음 강의에서 용어가 나왔을 때 빨리 이해하고, 용도를 짐작할 수 있었다.

흑 앞으로도 커리큘럼에 충실해야지


웹 크롤링 실습

< 포털사이트 실시간 검색어 가져오기 >

모듈

자주쓰이는 코드(함수)를 모아 놓은 파일, 직접 만들수도 있고, 다른 사람이 만든 것을 가져올 수 있다.

처음에 외부 모듈을 사용할 때는 설치가 필요하다.
ex) 터미널창: pip install requests

모듈.함수(파라미터)

request.get(url) 
#return : requests.response 
import requests

url = "http://www.daum.net"
# print(requests.get(url))
# response [200] -> 성공이라는 뜻
print(response.text) #html코드 모두 출력

BeautifulSoup (모듈명은 bs4)

# 모듈 불러오기
from bs4 import BeautifulSoup
BeautifulSoup(데이터,파싱방법) 
  • 데이터는 html또는 xml
  • 파싱(parsing)이란 데이터를 분해해서 의미있는 정보로 변경하는 과정
    print(BeautifulSoup(response.text, 'html.parser'))
  • 기본 HTML태그에 대한 이해 필요!
  • 특정 태그(a태그)를 가져오는 코드 작성하기
print(soup.title.string) 
print(soup.findAll("a","link_favorsch")) 
#보기 좋게 출력하기 
import datetime 
#print(datetime.today()) 시간표시 기본형
print(datetime.today().strftime("%Y년 %m월 %d일의 실시간 검색어 순위입니다.\n"))

#순위대로 추출
for result in results:
    print(rank,"위 : ",result.get_text(),"\n")
    rank += 1

파일로 저장하기

함수: open(파일타입,모드)

open(”rankresult.txt”, “w”)

모드의 종류

  • r(읽기전용)
  • w(편집가능)
  • a(기존 파일에 최신내용으로 덮어쓰기)

내 컴퓨터의 USER Agent (header값 확인)
https://www.whatismybrowser.com/detect/what-is-my-user-agent/

날씨 정보 가져오기 (openAPI)

API란?

  • applied programming interface 응용프로그램 프로그래밍 인터페이스
  • 인터페이스는 매개물이라는 뜻으로 API는 Client와 Server를 이어주는 기능을 한다.
  • 이번 실습에서는 openweathermap이라는 날씨 API를 이용했다.

F-string

  • f만 “”앞에 붙여주면 되고, 변수는 {}안에 넣기

json이란?

  • javascript object notation으로 데이터를 주고받을때 사용하는 포맷이다.
  • json 딕셔너리와 형태가 유사하여 딕셔너리 문법을 사용한다.

번역하기(googletrans)

구글의 Translator 모듈을 불러와서 활용했다.
from googletrans import Translator
언어 감지와 번역 두 가지 기능을 사용할 수 있다.

1. 언어감지

  • detect() 함수는 언어감지, 재료는 sentence라는 변수 값
  • 감지한 언어를 detected에 저장
  • confidence는 언어 감지의 신뢰성, 1.0은 100%
  • lang값만 꺼내겠다고 작성 필요: detected.lang
from googletrans import Translator

translator = Translator()
sentence = input("번역할 문장을 입력하세요 : ")
detected = translator.detect(sentence)

print(detected.lang)

#결과값은 ko 또는 en ...

2. 번역

번역기 함수
translator.translate(text,dest,src)

  • dest - destination 번역할 언어 (영→한 번역의 경우 한국어(ko) 입력)
  • src - optional (언어감지 기능으로 대체 가능)
  • 내용을 입력받고, 입력언어를 감지하고, 원하는 언어의 코드를 입력하면 해당 언어로 번역해주는 번역기를 만들 수 있다.

메일 보내기(IMAP)

  • SMTP란 간단하게 메일을 보내기 위한 약속이다
  • smtp server를 활용한다
  • 이메일 메시지 만드는 것 MIME : 전자우편을 위한 형식

메일을 보내는 절차

  1. smtp메일 서버 연결하기
  2. 서버에 로그인하기
  3. 이메일 메시지 만들어 보내기
# .EmailMessage 기능 

import smtplib
from email.message import EmailMessage

SMTP_SERVER = "smtp.gmail.com" #지메일의 경우
SMTP_PORT = 465

message = EmailMessage()
message.set_content("메일에 넣을 내용 텍스트")

# Header기능 
message["Subject"] = "이것은 제목입니다." 
message["From"] = "###@gmail.com" 
message["To"] = "###@gmail.com” 

smtp = smtplib.SMTP_SSL(SMTP_SERVER,SMTP_PORT)
smtp.login("###@gmail.com","######")
smtp.send_message()
smtp.quit()

이미지 포함해서 전송하기

함수 활용 add_attachment(image, 메인타입, 서브타입)

  • image (첨부할 파일)
  • maintype (파일의 종류 예: 이미지)
  • subtype (파일의 확장자 예: png)

유효성 검사하기

import re

  • 정규표현식을 reg라는 변수에 담음
reg = "^[a-zA-Z0-9.+_-]+@[a-zA-Z0-9]+\.[a-zA-Z]{2,3}$" 
print(re.match(reg,"example@gmailcom")) 
#틀렸을때 결과값은 none