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 : 전자우편을 위한 형식
메일을 보내는 절차
- smtp메일 서버 연결하기
- 서버에 로그인하기
- 이메일 메시지 만들어 보내기
# .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