[2024-04-03] 프로젝트 수행을 위한 이론 1 : Python (김인섭 강사님)
자료형
Pydantic 라이브러리를 사용하면 데이터 타입을 지정할 수 있음.
Python coding convention
가장 많이 사용하는 문자열 포맷은 "f 스트링"
i = 0
print(f"숫자를 입력하세요 {i + 1}번째")
중괄호 안에 변수명이나 수식 넣을 수 있어서 직관적.
아래 방식과 비교해보자.
name = 'haha'
age = 30
print("name : " + name + ", Age: " + str(age))
print("name : {}, Age: {}".format(name, age))
튜플은 수정, 추가, 제거가 안되니, 추가하고 싶다면 새로 만들면 된다
new_a = a + (10,)
딕셔너리
- API 라고 불리는 형태와 동일
- 딕셔너리 안에 딕셔너리도 들어갈 수 있음
- get() 함수는 디폴트값을 지정할 수 있어서 오류 대응 가능
- items() 함수
- update() 함수
- Key 삭제는 어떻게?
- 새로운 딕셔너리를 만들어서 삭제 하고자 하는 key 를 패스
- del() 함수 : del x['name']
- pop() 함수 : x.pop('name')
Set
- 순서가 없다
- 중복을 허용하지 않는다
제어문
파이썬 3.? 버전부터 조건문에 and, or 대신 &, | 사용 가능
for-else 문 : 반복문이 끝나고 else 부분이 실행됨.
for i in range(3):
print(i)
else:
print("done")
다음과 같이 조건문을 작성할 수도 있음
if 3 <= i <= 5:
함수
내장함수 (Build-in functions) : https://docs.python.org/ko/3/library/functions.html
외장함수 (External functions) : import 를 통해 사용
# 파이썬 버전 출력
import sys
print(sys.version)
# 현재 디렉터리 출력
import os
print(os.getcwd())
import time
print(time.time()) # UTC 기준 현재 시각을 초 단위로 반환
print(time.localtime(time.time()) # 서버시간
크롤링
목적 : 인터넷 상의 데이터 수집
라이브러리 : Selenium, webdriver-manager
코드 작성은 Jupyter Notebook 을 사용하는데,
Anaconda 를 설치하면 Jupyter Notebook 이 함께 설치된다.
Jupyter Notebook 에서 아래 내용을 셀에 입력해보자.
# VSC 에서는 ! 대신 % 를 사용할것.
!pip install selenium
!pip install webdriver-manager
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
ChromeDriverManager().install()
browser = webdriver.Chrome()
url = 'https://www.naver.com'
browser.get(url)
# 크롬 브라우저 타이틀바에 표시된 텍스트 출력
print(browser.title)
위 코드에서 browser 는 웹페이지 전체라고 생각하면 됨.
그래서 웹페이지 내에서 내가 원하는 요소(element)를 찾을려면 browser 를 대상으로 찾아야 함.
크롤링을 잘 하려면 element 를 잘 찾아야 함.
from selenium.webdriver.common.by import By
browser.find_element(By.CLASS_NAME, 'search_input').click()
browser.find_element(By.CLASS_NAME, 'search_input').send_keys('날씨')
browser.find_element(By.CLASS_NAME, 'btn_search').click()
temp = browser.find_element(By.CLASS_NAME, 'temperature_text').text
temp.split('\n')[1]
# 체감, 습도, 풍향
data = browser.find_element(By.CLASS_NAME, 'summary_list').text
data.split(' ')
네이버 화면에서 검색어 입력하는 부분을 찾고 싶다면,
그 부분 위에서 마우스 우클릭 -> "검사" 클릭
By.CLASS_NAME 외에도 아래와 같인것들이 있음.
By.TAG_NAME
By.ID
By.XPATH
위 그림에서 제일 좌측 버튼을 클릭하고,
웹 페이지에서 마우스를 움직여 보면, 마우스 커서 위치에 있는 부분의 element 가 하이라이트되서 찾기 편함.
참고로 크롬 개발자도구가 자꾸 닫힌다면, nprotect online 을 삭제해보자.
selenium 에서 엔터 키 등을 누르는것처럼 할 수 있음.
https://www.geeksforgeeks.org/special-keys-in-selenium-python/
Special Keys in Selenium Python - GeeksforGeeks
A Computer Science portal for geeks. It contains well written, well thought and well explained computer science and programming articles, quizzes and practice/competitive programming/company interview Questions.
www.geeksforgeeks.org
url = 'https://new.land.naver.com/complexes/111515?ms=37.497624,127.107268,17&a=APT:ABYG:JGC:PRE&e=RETAIL&ad=true'
browser.get(url)
browser.find_element(By.CLASS_NAME, 'complex_price--trade').find_element(By.CLASS_NAME, 'data').text
파이썬 기초 문법 시간이였지만, 파이썬 이외에 알짜 팁들을 많이 알려주셨다.
주식 자동 매매 시스템
AI 개발자가 백엔드 개발을 할 수 있으면, 할 수 있는 일이 더 많아짐.
AI 를 붙이면 앱 개발 단가가 수직 상승.
개발이 임팩트가 있는 이유 : 생산성을 높여갈 수 있음
새로운 기술 정보를 얻는 방법
- 공식 홈페이지
- Amazon Books : 킨들에서 볼 수 있음
- 논문 : Google Scholar
- 모임
정보 자체는 돈이 안되지만, 쌓인 정보를 가공하면 돈이 된다.
큰 프로젝트에서 나를 지켜주는 방법 : Divide and Conquer
수집하려는 정보에 대해서는 법무법인과 얘기 필요
사람이 바뀌려면 3가지 필요
- 만나는 사람
- 공간
- 시간
아직 상장하지 않은 네카라쿠배의 계열사로 가라
- 우리사주!
연봉
- 억대 연봉자에게 잡무를 시킬 수 있을까? 그럴 수 없다. 양질의 업무를 준다.
- 양극화
- 좋은 프로젝트 경험이 있으면 --> 연봉이 높아짐 --> 다시 좋은 프로젝트로 이어짐
- 초반 연봉 중요
- 3천 -> 5천, 5년
- 4천 -> 7천, 2~3년
배울게 많다는건 좋은 것
Learning Curve 가 좋아짐 --> 새로운 기술의 학습 속도가 빨라짐