# 클래스 선언: 코드작성
# 은행계좌 설계: Account-클래스 : balance(예금잔고)-변수,
# deposit()입금-함수,
# withdraw() 출금-함수
class Account:
balance = 10000
def deposit(self, amount):
self.balance += amount
def withdraw(self, amount):
self.balance -= amount
# 객체생성 (메모리 사용)
acc1 = Account()
acc2 = Account()
# acc2의 balance 변수 값 변경
acc2.balance = 6000
acc1.balance, acc2.balance
>
(10000, 6000)
# 메서드호출: 코드실행
acc1.deposit(2000) # 1번 계좌 입금
acc2.withdraw(3000) # 2번 계좌 출금
acc1.balance, acc2.balance # 계좌 조회
>
(12000, 3000)
dir(acc1) # 객체에 들어있는(사용할 수 있는) 함수 확인
dir(acc1)[-3:] # 세개만 출력
# 클래스 선언: 코드작성
class Account:
# def __init__(self, balance): # 메서드에서 사용되는 변수의 초기값을 설정하거나 검사할때 사용이 된다.
# self.balance = balance
def deposit(self, amount):
self.balance += amount
def withdraw(self, amount):
self.balance -= amount
# 객체생성: 메모리 사용: 자원 사용
acc = Account()
# 메서드호출: 코드실행
acc.deposit(1000) # 실행 시 오류남 이유는 balance를 선언하지 않고 진행함
http://news.naver.com:80/main.read.nhn?mode=LSD&mid=shm&sid1=105&oid=001&aid=000984721#da_727145
# Get
response = requests.get(url)
response
# Post
response = requests.post(url)
response
><Response [200]>
예시
만약 어느 신문사에서 기사를 Client가 작성을하고 Server에 저장시킨다.
일자별 사람이 클릭하는 비율은 D-1(100%)이면 D-2(20%), D-3(1%)로 차이가 난다.
Server를 효율적으로 관리하기 위해서 D-1의 기사는 처리 속도가 빠르고 가격이 비싼 Ram에 저장한다.
반대로 D-2, D-3 .... 의 기사는 처리 속도가 느리고 가격이 싼 ssd에 저장한다.

네이버 증권 사이트에서 주가 데이터 수집 예시
import warnings
warnings.filterwarnings('ignore') # 경고 문구 출력 x
import pandas as pd # 데이터를 수집 후 엑셀이나 csv파일로 저장하기 위해 불러옴
import requests # 브라우져에서 받아오기 위한 것

page_size, page = 60, 1
# 최신정보
url = f'https://m.stock.naver.com/api/index/KOSPI/price?pageSize={page_size}&page={page}'
# 기존 URL
# url = 'https://m.stock.naver.com/api/index/KOSPI/price?pageSize=10&page=2'
# get 방식
response = requests.get(url)
>
<Response [200]>
# 객체안에 저장되어있는 택스트 변수 출력, 200 글자만 출력
response.text[:200] # datatype = str
>
'[{"localTradedAt":"2024-03-07","closePrice":"2,647.62","compareToPreviousClosePrice":"6.13","compareToPreviousPrice":{"code":"2","text":"상승","name":"RISING"},"fluctuationsRatio":"0.23","openPrice":"2,'
# str > list, dict
data = response.json()
# list, dict > DataFrame
df = pd.DataFrame(data)
columns = ['localTradedAt', 'closePrice']
df = df[columns]
# KOSPI, KOSDAQ 입력시 유동적으로 나옴
def stock_price(code= 'KOSPI', page_size=60, page=1):
# 1. 웹서비스 분석: URL
url = f'https://m.stock.naver.com/api/index/{code}/price?pageSize={page_size}&page={page}'
# 2. request(URL) > response(Json) : Json(str)
response = requests.get(url)
# 3. Json(str) > list,dict > DataFrame: Data
columns = ["localTradedAt", "closePrice"]
return pd.DataFrame(response.json())[['localTradedAt', 'closePrice']]

# 필요 라이브러리
import warnings
warnings.filterwarnings('ignore')
import pandas as pd
import requests

# 1. URL
url = 'https://finance.daum.net/api/exchanges/summaries'
# 2. request > response : json(str)
response = requests.get(url, headers = headers)
response
>
<Response [403]>
이를 해결하는 방법은


# 1. URL
url = 'https://finance.daum.net/api/exchanges/summaries'
# header 설정
headers = {
'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36',
'Referer' : 'https://m.finance.daum.net/',
}
# 2. request > response : json(str)
response = requests.get(url, headers = headers)
# 3. json(str) > list, dict: DataFrame
data = response.json()['data']
df = pd.DataFrame(data)[['symbolCode', 'currencyCode', 'basePrice']]

# 라이브러리
import warnings
warnings.filterwarnings('ignore')
import pandas as pd
import requests, json

KT라는 이름으로 애플리케이션 추가함
REST API 키 받아옴

# key 값 받기
REST_API_KEY = '68da0c97a6c8c301c3d58f047f2f52c0'

# 1. document : URL
url = 'https://api.kakaobrain.com/v1/inference/kogpt/generation'
# 2. request(URL: headers, params) > response : json(str)
prompt = '원자폭탄을 개발한 사람은'
params = {'prompt': prompt, 'max_tokens': 50, 'n':2}
headers = {'Authorization' : f'KakaoAK {REST_API_KEY}',
'Content-Type' : 'application/json'
}
# json.dumps(): 문자열 인코딩: 한글>영문, 특수문자로 인코딩
response = requests.post(url, json.dumps(params), headers=headers)
response
>
<Response [200]>
# 3. json(str) > parsing: text
texts = response.json()['generations']
texts = [text['text'] for text in texts]
texts
[' 누구? Heinrich Hertz 독일의 과학자. \u200b 원자탄과 그 이용이 세계에 야기할,,곧 나타나겠습니다 줄지어 있는 사망자를 바라 본 사람들은 점점 고개를 젓기시작했다. 그리고 이',
" 누구입니까? 오펜하이머라는 과학자입니다. '파퓰러사이언스'지 1996년 11월판에 기재된 저자 소개글에서, 생물학자이기도 한 필자는 가상의 [오펜하이머의 최후의 날]이라는 풍자 글 중"]
이런식으로 출력이 된다.
카카오도 생성형AI가 있는 것을 처음 알았다.
근데 문장만들고, 요약하기 예제 문제를 풀어봤더니 우리가 카카오톡에서 많이 사용하는 단어를 쓰는 것 같았다.

이걸보면 chatGPT와는 좀 다르게 뭔가 인공지능이 하는 말이 아닌 것 같다.
웹 크롤링... 내가 타교육 시험칠때, 배웠던 내용 중 하나다.
그땐, 아무것도 모르는 나에게 그냥 교육자료를 던져주고 2주동안 공부해서 웹페이지를 만들어라. 이런 내용의 시험이었다.
그걸 준비하면서 웹크롤링을 처음 접했는데, 크롤링에 대해 1도 이해를 못했고 단어만 익숙하다ㅋㅋㅋㅋ
하지만 이번에 Web Crawling이 어떤 건지 그 내부엔 어떤 기능을 어떻게 사용하는지 알 수 있는 기회였다.
갑자기 든 생각인데 크롤링으로 돈 버는사람 부럽다 나두,,,할뤠