좋았던 점

이번주는 점심시간에 카페인을 섭취하지 않아 밤에 잠을 잘 자는 한주였습니다. 그로 인해 수업시간에 좀 더 집중 할 수 있었던거 같습니다. 또한 점심을 구내식당이 아닌 다른 식당을 가니 더욱 맛있는 식사 시간을 가진거 같습니다. 전체적으로 지난 2주보단 활력있는 교육시간이 되었던 거 같습니다. 수업시간에 배운 mysql 또한 학교생활하면서 배운 내용이라 조금 수월하게 과정을 이어나간거 같습니다. 주말에는 머리도 자르고 옷도 사면서 힐링타임도 가졌습니다. 숙제를 해결한거 같아 홀가분한 마음으로 주말을 마무리하는 중입니다. 

 

아쉬웠던 점

잘 하지 못하는 크롤링 기술을 배워 헷갈리고 눈이 아픈 2일이였습니다. 심지어 금요일에는 오전에 국민취업제도 상담을 하여 오전 6시에 일어나 많이 피곤한 하루 였습니다. 또한 이번주에 코딩테스트 연습을 시작하였습니다. 첫문제를 어려운 문제를 골라 많은 어려움을 겪었습니다(자존감이 많이 떨어졌었습니다). 그 후 수업이 끝난 후에도 센터에 남아 계속 공부중입니다. 앞으로 갈길이 먼거 같지만도 새로운 도전과제가 생긴거 같은 느낌이 들어 파이팅할 수 있을거 같습니다. 

 

인상적이었던 점

국민취업제도 상담이 드디어 잡혀서 외출이나 휴가를 쓰고 들을려고 하였으나 오전 8시에 잡혀 놀랐습니다. 상담사분도 매우 젊으시고 상담 받은 당일부터 문자로 취업관련 내용이 오는것이 신기했습니다. 강의를 같이 동료들과도 점점 친해진거 같고, 자취방 또한 완전히 적응된거 같습니다(이젠 완전 숙면 합니다).  

일요일에 머리를 잘른 후 엘레베이터 앞에서 아주머니에게 아저씨라는 소리를 들었습니다(심지어 머리를 잘라 더 어려진거 같은데...). 00년생(구 나이 26세)이면 아직은 청년이라고 살아서 조금의 마음의 상처를 받는 순간이였습니다...

블로그 작성 후 친구들과 맥주를 마시러가 상처를 치유할 생각입니다. 

 

수업 내용중 어렵거나 중요하다고 생각한 내용 (중요하지만 원래 아는 내용은 스킵하였습니다)

 

1. mysql 랜덤 데이터 넣기

ELT(n, '값1', '값2' ...) N번째 값을 반환하는 함수입니다. 

rand() 0~1 랜덤으로 난수를 반환하는 함수입니다.

floor()는 소수점 이하를 버리는 함수입니다.

즉 (1+rand()*8)를 활용햐 1~8 사이의 값을 반환하고 ELT함수를 이용하여 뒤에 적은 8개 값중 하나를 반환하는 코드입니다다. 그렇게 성을 선택하고 같은 방식으로 이름을 선택한 후 concat함수를 이용하여 연결하고 name에 넣는 코드입니다. 

% 중요한점 : ELT함수는 인덱스가 1부터 시작이라 1+rand 해줘야 합니다. 

 

2. mysql 한글 글자 길이

mysql의 한글자 길이를 출력해보면 글자당 3씩 받아 출력됩니다. 

 

3. substring

substring(추출할 문자열, 추출을 시작할 부분, 추출할 글자수)

문자를 추출하는 함수인 substring입니다. substr과 다른 함수인줄 알았지만 그냥 줄여서 사용하는 함수입니다. 즉 substring과 substr은 같은 기능을 하는 같은 함수입니다. 

 

4. 프로시져

 

mysql에 함수를 정의하여 만드는 기능입니다. 파이썬의 def ~~ 와 비슷합니다. 왼쪽 데이터베이스 아래 stored procsdures에 오른쪽 마우스 클릭후 create stored procsdures를 눌러 작성 할 수 있습니다. 

 

5. coalesce() 함수

coalesce('값1','값2','값3',...)  값들중 왼쪽부터 차례로 탐색하여 NULL이 아닌 값을 반환하는 함수입니다. 값이 없을 경우 default값으로 설정하는데 유요 합니다. 위 사진의 코드는 kor이 없을경우 기본값을 0으로 주는 코드 입니다. 

 

6. 크롤링에서 원하는 구역을 선택하는 방법 2가지

6-1.  html의 css를 선택하여 찾는 방법

크롤링할 페이지에 가서 f12(개발자모드)창을 연 후 원하는 구역의 코드를 찾아 copy - copy selector를 활용하여 추출 할 수 있습니다. 보통 정적 크롤링에서 사용합니다. 

6-2.  XPATH 선택하여 찾는 방법

6-1번과 같은 방법으로 원하는 코드의 구역을 찾은 후 copy - copy Xpath를 활용하여 추출합니다. 보통 동적 크롤링에서 사용합니다. 또한 클릭 혹은 선택 이벤트도 줄 수 있습니다. 

6-3.  두 방법의 차이점(By chat gpt)

두 방법은 사용하는 라이브러리가 다릅니다. 또한 속도와 동적 요소 선택이 어렵고 쉬움에 차이때문에 css선택자 방식은 정적 크롤링 Xpath방식은 동적 크롤링에 주로 사용됩니다. 

 

7. 크롤링 후 데이터 저장

크롤링 후 데이터를 딕셔너리 형태로 저장하는 방법입니다. namse를 미리 정해두고 추후 딕셔너리의 key값으로 사용합니다. soup.select를 이용하여 크롤링 한 후 value 값으로 저장하는 방법니다.  for문과 enumerate를 활용하여 인덱스와 값을 가져옵니다. 여기서 인덱스를 딕셔너리에 저장하기 위해 필요합니다. 그 후 값에서 find함수를 활용하여 td태그를 찾고 .text를 활용해 텍스트화 한 후 저장합니다.

 

8. 데이터 데이터베이스에 저장

다음과 같은 방법으로 딕셔너리에 정장한 데이터를 데이터베이스의 sql문을 이용해 저장합니다. stores 딕셔너리에서 값을 하나씩 가져와 valuse만 가져와 sql문과 합치는 방식입니다. 마지막에 conn.commit()을 통해 커밋을 해야 최종 반영이 완료 됩니다. 

 

금주의 이모티콘(금주의 나의 상태를 제일 잘 표현하는 이모티콘)

+ Recent posts