오늘 예정_ 오전 중 강의 듣고 오후에는 백준문제풀이...단 1분도 낭비할 수 없어..
일단 쓰고 보자ㅏㅏ
웹개발반 강의 정리
3주차.
javascript로 시작
fetch문으로 url자료 가져와서 스파르타피디아를 업그레이드:)
$(document).ready(function () {
fetch("http://spartacodingclub.shop/web/api/movie").then((res => res.json()).then(data => {
let rows = data['movies']
rows.forEach((a) => {
let title = a['title'] #url에 있는 각 데이터를 let으로 가져온다
let title = a['desc']
let title = a['comment']
let title = a['star']
let title = a['image']
let star_image = '⭐'.repeat(star) #별점 표시하기
let temp_html = `<div class="col"> #각각 div에 자료를 ${}로 넣는다.
<div class="card h-100">
<img src="${image}"
class="card-img-top" alt="...">
<div class="card-body">
<h5 class="card-title">${title}</h5>
<p class="card-text">${desc}</p>
<p>⭐⭐⭐</p>
<p class=${comment}>[]</p>
</div>
</div>
</div>`
$('#cards').append(temp_html) #자료마다 각각의 카드가 추가되도록 한다.
})
}))
})
이후 이번주부터 날 괴롭히고 기쁘게 했던.. python에 들어갔다. 다시 기본기를 짚어보는 과정이었다.
python은 js와는 다르게 tap으로 언어를 정리하는 약속이 되어있다. // js는 그냥 예쁘라고 함
def : 함수 정의
return : 되돌려서 넣기
if 조건문
for 반복문
dict list 자료형
변수
함수
ㄴ어제 배운바에 따르면 python에는 네이밍컨벤션이 있다. Pascal, Snake!
Pascal은 dianeIsDeveloper 붙여서, 첫글자 소문자, 나머지는 대문자로 쓴다 + class
Snake는 diane_is_developer 언더바_ 소문자로 쓴다 + 함수
이외에도 Camel이 있는데 upper, lower 가 있고(첫글자 대소문자 차이), JAVA에서 사용.
모듈, 설치하거나 python에 기본 내장되어있는 모듈을 import해서 사용한다.
requests 는 .get('url')로 함께 써서 데이터를 가져온다
BeautifulSoup(bs4) 로 데이터를 크롤링, 웹페이지의 데이터를 받아온다.
ㄴ 원하는 자료 부분을 솎아내어 필요한 부분만 사용!
soup안에서 필요한 정보를 찾은 다음(웹페이지>검사>해당 부분 구역 찾아 copy selector,)
for, if 문으로 자료 정리
더 안으로 들어가고싶으면 for문 내에서 .select_one('나머지 경로')
trs = soup.select('#old_content > table > tbody > tr') #url에서 가져올 개괄적인 정보 경로
for tr in trs:
a = tr.select_one('td.title > div > a') #경로1
if a is not None:
#if 문 안에서 경로1 > 안에 있는 필요한 정보를 각각 넣는다.
title = a.text # text만 가져온다
rank = tr.select_one('td:nth-child(1) > img')['alt'] #alt값만 가져옴
star = tr.select_one('td.point').text #별점의 text만 크롤링
print(rank, title, star)
DB활용하기
DB란
DataBase, 데이터를 잘 쌓고 잘 가져갈 수 있게하는 프로그램.
SQL , NoSQL(not only SQL) 두 종류가 있다.
SQL :
정해진 칸에 자료를 넣음 (=엑셀과 비슷)
실수할 일이 없다! = db가 데이터가 없다고 알려줌
NoSQL :
정형화된 틀x , 데이터를 내 마음대로 저장.
여러 종류의 데이터를 가리지 않고 받을 수 있다.
★ python에서 mongoDB연결하기 ★
내 컴퓨터에서 DB저장, DB자료 가져오기
pymongo, dnspython 설치 후
from pymongo import MongoClient
client = MongoClient('여기에 URL 입력') #mongoDB주소 넣기!
db = client.dbsparta
mongoDB에는 dict을 입력하면 된다.
all_users = list(db.users.find({},{'_id':False}))
#{'_id': False}는 id값을 지워서 데이터값만 보겠다는 내용
ㄴ list 의 경우 for문으로 넣는다.
doc = {'fruit':'사과','price':900}
db.users.insert_one(doc) #저장하기
user = db.users.find_one({}, {'_id': False}) #1개만 찾기
all_users = list(db.users.find({},{'_id':False})) #여러개 찾기
db.users.update_one({'fruit':'감'},{'$set':{'price':1000}}) #자료 업데이트
db.users.delete_one({'fruit':'price'}) #자료 지우기
찾고, 업데이트하고 지우는 등 DB내용을 조작, 활용 가능하다.
***DB - python 연결해서 정보 주고받기 연습, 꼭 하자!
숙제 : 크롤링 해서 정보 출력하기
간단히 써보고 작업하자.
requests.get()에 url 입력하고,
가져오고 싶은 정보를 각각 변수에 담고 : soup.select('경로')
음악리스트의 순위, 이름, 가수명을 가져온다.
이때 for 문으로 1가지를 먼저 가져오고 if문으로 함께 가져올 수 있게 한다.

순위를 text로 가져오려니
상승 한 것도 같이 나오는 문제가 생겼다.

.text[0:2] 를 사용해 문자가 2번에서 끊기게 해주고,
나머지 이름, 가수명을 가져왔는데,
공백이 매우 크게 출력되었다..
힌트로 받은 strip()이라는 함수를 사용했다.
strip()은 문자열의 선행, 후행 문자가 제거된 복사본을 돌려준다고 한다.
chars인자를 사용하여 제거할 문자를 지정할 수 있고, default값이 공백을 제거해준다.
.strip('제거하고 싶은 문자 넣기') : 넣은 문자 모두 제거
.lstrip : 선행문자 제거
.rstrip : 후행문자 제거
music_rank와 title에 둘다 붙여줬다.
순위가 한 자리인 경우 줄바꿈까지 가져오는 문제가 있어서 해결하였다.
15번 곡의 문제는 ... 좀더 공부가 필요하다.

예측되는 문제는 19금 아이콘이 따로 붙었다는 것인데,
아이콘이 붙은 것을 예외처리하는 것이나
strip을 따로 붙일 수 있는 방법을 생각해보아야 할 것 같다.
++ 나중에 추가 작성할 것!
파이썬 데이터분석 강의 정리
dart openAPI 활용하기
요 링크는 dart fss 라이브러리
https://dart-fss.readthedocs.io/en/latest/
import dart_fss as dart_fss
import pandas as pd
api_key = '여기에 API 키를 입력' #opendart에서 개인 인증키를 입력한다.
dart_fss.set_api_key(api_key=api_key)
corp_list = dart_fss.get_corp_list()
corp_list.corps
라이브러리에서 원하는 자료를 가져오고,
**라이브러리에서 불러온 자료에 모르는 것이 있으면 dartopenAPI의 개발가이드에서 확인할 수 있다.

(stock_code있는 건 상장사..!, .notnull() , isnull()로 상장사와 비 상장사를 구분할 수 있다)

그리고 특정 회사를 보고싶으면,
변수[변수['부르고싶은목록'] == '회사명']
data변수 = dart_fss.api.받고자 하는 라이브러리(corp_code. '연도'. '사업보고서') #보고싶은 것 넣기
pd.DataFrame(data변수['list'])
변수['보수'] = 변수['보수'].str.replace(','.' ') #,를 공백으로 변경
변수['보수'] = pd.to_numeric(변수['보수'].str.replace(','.' '))
# 숫자형을 바꿀때 특화된 함수, to_numeric
# **시리즈에만 적용되는 함수! 데이터프레임 전체를 바꾸려면 열을 시리즈로 뽑아서 사용
# astype라는 모든 자료형으로 변환하는 것도 있다
pd.concat(변수리스트)
concat()
concatenation의 줄임말, 연결
라이브러리의 리스트 내 요소나 데이터프레임끼리 합쳐주는 함수이고,
데이터프레임끼리 더하는 것이라면 [] 꼭 넣기
> axis 를 사용하면 가로로 결합할 수 있다..! 설정하지 않으면 default값이 0이어서 열이 쭉 길어진다.
pd.concat([df,df2], axis=1) #리스트 0 1 2.. 와 같이 지칭해주는 듯
> index를 통해 추가하고 싶은 열이나 행을 지정해줄 수도 있는 듯. index=[1,2]..
> .append는 열(세로)로만 결합된다.
+참고
dartopneAPI에는 여러가지 정보가 공시되어있고 회사마다 각각 정보가 있고 없는 것이 다르다.
그래서 try - except문을 사용하여 정보가 없더라도 계속 코드가 진행되도록 한다.
try:
가져오고자하는 정보들
except:
print(f'error {name}')
*
.ascending = True/False값으로 쓰고,
오름차순, 내림차순 정렬을 할 수 있다.
....
숙제로는 남녀 연봉차이가 가장 안나는 기업 오름차순(적게나는 기업부터 ~) 정리를 했는데,
1000개를 돌려도 안나온다ㅋㅋㅋㅋㅋ
colab에서 매일 총 10000개 까지 돌릴 수 있다고 하니 내일 10000개 넣고 돌려봐야지
확실히, 작게 프로젝트를 진행해보고, 좀더 어려운 ㅋㅋㅋ과정을 겪고 돌아와서 보니
그땐 분명 어려웠던 수업이 굉장히 눈과 귀에 쏙쏙 들어온다..! wow!
기초와 기본을 잘 쌓아나가자:)

'AI 웹개발반 > 웹개발, 파이썬 기초' 카테고리의 다른 글
[python] for-else문 사용하기 (0) | 2023.08.15 |
---|---|
230329-0402 웹개발, 파이썬기초 4주차 (0) | 2023.04.02 |
230313 웹개발 2주차 (0) | 2023.03.14 |
230308 웹개발 1주차 (0) | 2023.03.08 |
230306 개발 공부 시작 (0) | 2023.03.06 |