※ 학습 노트

학습 시작 2021년 7월 4일

학습 사이트 Coursera(코세라) 평점 4.8

과정 제목 Learning How to Learn: Powerful mental tools to help you master tough subjects

학습 시간 비디오 3시간, 연습문제 3시간, 보너스 자료 3시간 

강사 Barbara Oakley, Dr. Terrence Sejnowski

 

Introduction to the focused and diffuse modes

- 사고의 두 모드가 있음 Focused 모드 & Diffuse 모드

- Focused 모드는 간단한 계산, 문학 비평, 전자기 흐름 등 익숙한 문제를 해결할 때 사용

- Diffuse mode는 새로운 사고 패턴, 다른 방식으로 사고할 때 사용 

- 두 가지 모드를 동시에 할 수는 없는 것으로 밝혀짐

 

along the way 그 과정에서

condense 응결시키다

 

 

Using the Focused and Diffuse Modes--Or, a Little Dali will do You

- 살바도르 달리는 의자에 느긋하게 앉아 마음이 가는대로 두며,

  기존에 집중해서 생각하던 것을 멍하니 생각함

- 손에 열쇠를 들고 있다가 잠에 빠져서 바닥에 떨어지면 소리에 깨서

  Diffuse 모드에서의 새로운 생각들을 Focused 모드로 다시 불러일으킴

- 에디슨도 비슷한 방식으로 사고함

- 새로운 것을 배울 때는 Focused 모드와 Diffuse 모드를 왔다갔다해야함

- 비유, 예시는 학습에 도움이 됨

- 새로운 것을 배울 때는 근육을 키우는 것처럼 시간을 두고 단계적으로 해야 함

 

analogous 유사한 

fiend 악마같은 사람, ...광

neuro scaffold 

grapple with ~을 해결하려고 노력하다

assimilate (아이디어나 정보를) 완전히 이해하다. [소화하다]

 

 

What is Learning

- 뇌는 3파운드 정도 되지만, 몸의 다른 기관에 비해 10배의 에너지를 씀

- 과거에는 뇌가 성장하고 나면, 시냅스 강도는 학습에 의해 조절가능하지만,

  연결 패턴은 뇌손상이 있지 않는 이상 바뀌지 않는다고 보았음  

- 그러나 지금은 뇌 연결이 다이나믹하고 성장한 이후에도 그렇다고 알고 있음 

- 뉴론을 연결하는 시냅스는 끊임없이 생기고 사라짐

- 그러므로, 자고 나면 당신은 더 이상 같은 사람이 아닌 것임

- 셰익스피어의 맥베스가 불면증을 한탄하는 장면을 보면 세익스피어가 이 사실을 이미 알고 있었다는 것을 알 수 있음

  "걱정이라는 뒤엉킨 실타래를 풀어주는 잠, 하루하루 삶의 위안이며, 고된 노동의 목욕탕이고, 상처받은 영혼의 진정제이며, 위대한 자연의 두 번째 과정이고 삶이란 축제에 가장 중요한 영양을 공급하는 그 잠 말이지"

  즉, 잠은 낮 동안의 흐트러진 경험과 걱정의 실타래를 기워서 인생 스토리의 태피스트리를 만들어줌

 

dendritic 수상의(나무처럼 가지가 있는 형상)

spiny 가시가 있는

knob 손잡이

coming off 벗어나다

intriguingly 흥미를 자아내어

lament 애통하다

knit up 깁다, ...을 원상태로 하다

raveled sleeve of care 뒤죽박죽인 근심

weave into 짜서 ...을 만들다

 

추가 사이트 brainfacts.org

반응형

 

프로그램

제목 주관 대상 비고
실무자를 위한 ESG 가이드 과정 한경아카데미 민간 및 공강기관 ESG 관련 업무 담당자
기타 ESG 경영 관련 분야 관심 있는 분
주2회, 3주
ESG 지속가능경영보고서 작성 실무 한국생산성본부 ESG, 지속가능경영 및 기업사회공헌 실무자/관리자 2일, 16시간
ESG 인사이트 확보 
미래 혁신을 위한 퓨터 디자인씽킹 (온라인)
한국생산성본부 미래 리터러시 역량 향상하고자 하는 개인 및 실무자
ESG, Digital Transformation 관련 인사이트를 얻고자하는 실무자
2일, 14시간
ESG교육과정 이노소셜랩
유승권 이노소셜랩 이사
(한양대 경영학부 겸임교수)
기업 CSR, ESG, 지속가능경영 실무자  

 

강사

강사명 소속 토픽 비고
윤순진 서울대 환경대학원 기후환경 위기시대에 기업의 도전과 기회 환경부 지속가능발전위원장
재혁 고려대 경영학과 ESG와 지속가능 전략  
김종대 인하다 지속가능경영대학원 ESG가 국가의 미래를 결정한다.  
오형나 경희대 국제학과 2050 탄소중립시대 ESG 글로벌 동향 그린뉴딜분과 전문위원
이유진 국무총리 그린뉴딜특별보좌관(녹색전환연구소 연구원) 2050 탄소중립 정부 정책과 ESG 연계 방안  
사이먼 스미스 주한 영국 대사 기후 위기시대 영국 정부의 역할과 그린 파이낸스  
윤덕찬 지속가능발전소 대표 AI로 실시간 기업별 ESG 분석
ESG 평가 기준 원칙
 
이원일 지속가능발전소 의장 기업지배구조 개혁 방안  
임대웅 유엔환경계획 금융이니셔티브(UNEP FI) 한국 대표 ESG 법제화와 스튜어드십 코드  
임성택 법무법인 지평 변호사 ESG 도입과 과제  
조남진 딜로이트안진회계법인 파트너 실제ESG 컨설팅 경험 바탕으로 한 기업별 대응 전략 소개  
원종혁 국민연금 기금운용위 투자정책전문위원장 국민연금의 ESG 투자 방향과 원칙  
나석권 SK사회적가치연구위원장 SK의 ESG 추진 현황과 글로벌 기업들의 ESG 현황  
최영권 우리자산운영 대표 자산운영 업계의 ESG 책임 투자  
문두철 연세대 경영전문대학원   부원장
안드레스 기랄 연세대 경영대학   부학장
윤용희 법무법인 율촌   변호사
최준영 법무법인 율촌   전문위원
김정훈 IBS 컨설팅   수석연구위원

도서

제목 저자 출판사 링크
ESG 개념부터 실무까지 K-기업 서바이벌 플랜 한경비즈니스 전문기자 17명 한국경제신문 https://www.hankyung.com/esg/

 

온라인영상

제목 채널 스피커 링크 비고
ESG가 대세가 된 이유는?
ESG 비즈니스 리뷰 이윤정 편
EBS 비즈니스 리뷰  이윤정
환경전문변호사
https://www.youtube.com/watch?v=fUuWfgOXvr4  
ESG 시대, 기업은 무엇을
준비해야하는가
삼정KPMG 이동석 전무 https://www.youtube.com/watch?v=7v1436SxZL0 컨설팅 홍보
ESG 열풍의 실체 탐사기획
(MBC)
곽승규 기자 https://www.youtube.com/watch?v=MtqKeojZWPQ  
기후위기 시대, 경제와 투자전략도 이렇게 바뀌어야 합니다 세바시 강연 슈카 https://www.youtube.com/watch?v=svQsJkCdvLs  
(현대자동차광고)        

 

SK그룹 SUNI

스피커 스피커 소속 토픽 비고
애스워드 다모다 네러티브 앤 넘버스 저자 SK 임직원 대상 영상 글로벌 석학 협업 콘텐츠
숀콜 하버드 경영대학원 교수 사회적 가치, ESG 케이스 글로벌 석학 협업 콘텐츠
염재호 전 고려대 총장 미래 한국의 상상 디자인 SK(주) 이사회 의장
김용학 전 연세대 총장 대변환기 기업의 선도적인 사회적 역할 SK텔레콤 이사회 의장
신창환 성균관대 전자전기공학부 교수 반도체산업의 발전방향 SK하이닉스 사외이사

 

반응형


디지털 교육 설계를 위해 디지털 관련 개념을 이해해보기로 한다 ㅋㅋㅋㅋㅋㅋㅋ

디지털이라니 좋지만 싫을 것 같다. 싫지만 좋을거야 ㅠ-ㅠ 


※ 학습 노트

학습 날짜

 2020년 1월  

학습 사이트 

 Edwith

과정 제목

 3분에 익히는 머신러닝의 기본 원리

학습 시간

 72강/941분

의견

 - 짧은 영상 3개로 개념적인 설명만 제공

 - 참고자료로 영상이 1-2개씩 추가되어있음

 - 추가된 영상은 (내 기준) 갑자기 어려워지기도 하고 사운드가 안정적이지 않아서 듣기 힘들지만,
   어차피 용어와 개념에 익숙해지려면 이것저것 여러번 들어야겠다는 생각에 1.5배속으로 1회 시청하였다

 - 추가 영상 중 [리얼밸리 EP05] 머신러닝, 딥러닝 초간단 설명 추천!!! 

   개인적으로 머신러닝의 상세 내용보다는 기본 개념과 활용이 궁금했던터라 요정도가 딱 좋았을 수준 ㅎㅎ

 - 마지막 추가 영상까지 보고 느낀바는,
   edwith강좌를 개인 유튜브 채널, 블로그, meet-up 홍보용으로 활용한 것이 아닐까,,,싶었다. 뭐, why not ㅋ

 학습 모듈

 어려운 머신러닝, 쉽게 설명해드려요

 머신러닝을 실전에 적용하려면?

 딥러닝의 원리를 알아봅니다


어려운 머신러닝, 쉽게 설명해드려요

* 머신러닝이란 : 만들고 싶은 목표가 있고, 만드는 방법을 모르는 상황에서

                      해결 방법을 사람이 제시하는 것이 아니라 기계가 직접 시도하는 것을 반복한 후 적합한 방법을 만들도록 하는 기술

* 머신러닝 3요소 : 1) 경험 2) 성능지표 3) 작업목표 >> 3요소를 반복하며 정답에 가까워지는 것 

머신러닝이 인공지능의 핵심 기술인 이유

  - 인간이 지능을 재현하려는 인공지능은 방법은 모르지만 결과를 알고 있음

프로그래밍과 머신러닝의 차이

  - 기존 컴퓨터는 프로그래밍을 통해 일일이 방법 하나하나를 코딩해줌

  - 머신러닝은 컴퓨터 스스로 데이터를 학습해서 결과물을 만들어냄 

* 소프트웨어 1.0 vs 소프트웨어 2.0

- 사람이 프로그래밍을 해주는 소프트웨어 1.0 

- 기계 스스로 데이터를 통해 점점 발전하는, 소프트웨어 2.0 



머신러닝을 실전에 적용하려면?

머신러닝의 5단계

1단계 데이터 수집 (collecting)

2단계 데이터 전처리(preprocessing) : 각기 다른 크기와 구도를 가진 데이터를 최대한 같은 포멧을 갖추도록 처리하는 과정

         - 많은 경우 어떤 데이터가 어떤 결과물을 만드는지 패턴을 알려주는 과정인 레이블링(labeling)이 필요

3단계 피처추출(feature extraction): 작업 목표와 관계없는 불필요한 피처들을 버리고 중요도에 맞게 적절히 재구성하는 과정

        - 딥러닝: 데이터를 쏟아 부어 피처 추출을 머신러닝에 맡기고자 하는 기술

4단계 학습 (training)

5단계 검증(validation)



딥러닝의 원리를 알아봅니다 (Feat.CNN)

* 머신러닝 차원의 저주: 데이터의 차원 (피쳐)의 수가 늘어날수록 필요한 데이터의 량은 제곱으로 많아짐 

* 머신러닝 차원의 저주를 해결하기 위한 딥러닝 단계 

  CNN(Convolutional Neural Network) 이미지 필터링, 샘플링 반복 >> 저차원의 필터 생성 >> 여러 레이어 생성 >> 예측



[추가 영상] 머신러닝, 1시간으로 입문하기



* What is machine learning

  A computer program is said to learn from experience E with respect to come class of tasks T and performance measure P,

  if its performance at tasks in T, as measured by P, improved with experience T - T.Michel(1997)


(예시) 축구 게임 전술을 위한 프로그램

         T: 축구 게임에서 승리

         P: 골

         E: (x) 선수들의 움직임 (y) 평가

 

 Task

 Performance

 Experience

 분류 (classification) 

 0-1 loss function (에러가 발생했을 때 1의 에러를 더하는 방법)

 labeled data 

 회귀 (regression)

 L2 loss function (실제 값과 예측한 값의 거리의 합)

 labeled data

 군집 추출 (clustering)

 군집의 중심에서의 거리

 unlabeled data


* Machine learning process

1) Select a parametic / nonparametic model

2) Set a performance measurement including regularization term

3) Training data(optimizing parameters) until validation error increases

4) Evaluate the final performance using test set


* Regularization
   - 현재를 잘 설명하면서 미래를 예측할 수 있는 모델 필요 
   - train data가 너무 딱 맞게 학습되면 과적합(over fitting)됨 
   - 데이터를 구분하는 선이 지나치게 복합해지지 않도록 곡률을 줄여주는 역할을 하는 factor를 cost 함수에 추가하는 것이 regularization

...어려워지고 있다...먼소린지 모르겠고...(먼산)


Non parametric model: 모델없이 알고리즘을 자동으로 찾도록 하는것, 단점으로는 샘플이 훨씬 많이 필요함

  - Support Vector Machine: 분류 규칙을 찾는 기법

  - Gaussian Process Regression


마지막 몇 분은 아예 모르겠는 부분...ㅋ 그냥 꾸역꾸역 들어보았다 ㅋ



[추가 영상] 머신러닝/딥러닝 강의 7가지 추천

* 양, 난이도, 정성, 커리큘럼, 추천자의 마음을 기준으로 7개 강의를 추천함

* Coursera, Udacity, youtube, stanford 등



[추가 영상] [리얼밸리 EP05] 머신러닝, 딥러닝 초간단 설명 ★추천





일반적인 컴퓨터 사이언스사람이 찾아서 기계에 알려주는 것

  머신 러닝: 데이터를 많이 주고 최소한의 모델을 제공하여 기계한테 직접 찾게 하는 것

  딥러닝: 머신 러닝 방법 중 하나로, 모델 구조 중 사람의 뇌를 본딴 모델 구조를 사용

            - 데이터가 방대해지고
            - 인프라 스트럭처 레벨 기술 (GPU 사용, 빅데이터 처리 기술) 통해 인공신경망 훈련 가능해지며 두각을 드러내기 시작

- 현업에서는 최적화, 추천, 효율성을 높이는 문제에 굉장히 적용이 많이 되고 있음


 


[추가 영상] 어머니에게 딥러닝(CNN, RNN, GAN)을 설명해보자 // 포럼IT 딥토크 이벤트

* CNN: 이미지 인식 분야에서 사용하는 알고리즘

          이미지를 필터가 훑고 지나가면서 특징을 잡아냄

          텍스트 인식에도 적용하고 있음

* RNN: 시계열 데이터, 미래 예측, 음성인식에 사용

* GAN(generative adversarial network)



[추가 영상] [ART x TIPS] 인공지능 전문가, 스타트업을 만나다

* ...

반응형


영어 공부 겸 트랜드 공부를 위해 맥킨지 인사이트와 하버드 비즈니스 리뷰 위주로 아티클을 찾아읽곤 하는데, 

기왕이면 기록 & 정리하면서 보기로 한다.


주제는 한정하지 않으나 업무 관련한 것을 우선으로 찾아볼 예정이다. 

교육 업무를 하고 있으나, 교육을 주제로하는 아티클을 찾기보다는 교육해야할 컨텐츠를 주제로한 아티클을 찾을 것이다.

예를들어, 작년까지는 리더십 아티클을 주로 보았고, 올해는 마케팅 또는 디지털 아티클을 찾아볼 생각이다.


기록할 내용은 교육할 때 인용할만한 인사이트 또는 교육/학습과 관련하여 고민거리를 제공하는 내용이다.


하지만 늘 그렇듯, 하다보면 바뀔 수도 있음 ㅎㅎㅎ




Mckinsey Insight 

https://www.mckinsey.com/business-functions/mckinsey-digital/our-insights/what-comes-after-the-2020-digital-dash





 tumultuous 격동의

 usher 안내하다

 fraught 좋지 않은 것들이 가득한


 출처

 Mckinsey Insight 

 https://www.mckinsey.com/business-functions/mckinsey-digital/our-insights/digital-strategy-in-a-time-of-crisis

 제목

 Digital strategy in a time of crisis

 영어 표현

 The quickening is evident already across sectors and geographies

 The COVID-19 crisis seemingly provides a sudden glimpse into a future world

 inherent inertia 내재하는 타성 

 hinder 저해하다

 deeply grooved 깊게 홈이 있는

 fall short 모자라다

 cadence 억양

Learning for Learning 

 #위기가 학습 기회를 제공 

 * The ways they learn from and adjust to today’s crisis will deeply influence their performance in tomorrow’s changed world, providing the opportunity to retain greater agility as well as closer ties with customers, employees, and suppliers. 

 * A crisis demands boldness and learning


 #디지털 육성 프로그램 구성으로 고려 : Design Thinking + Tech (AI 등)

 * Organizations that make minor changes to the edges of their business model nearly always fall short of their goals. Tinkering leads to returns on investment below the cost of capital and to changes (and learning) that are too small to match the external pace of disruption. In particular, organizations rapidly adopting AI tools and algorithms, as well as design thinking, and using those to redefine their business at scale have been outperforming their peers.


 #학습 능력 중요

  Bold action and the ability to learn are highly interrelated. The real-time ability to learn during a crisis is in fact the one ingredient that can turbocharge your ability to scale quickly.

 At the broadest level, these include the prospect for real-time learning about where value is going in your markets and industry, the chance to learn and feed back quickly what’s working in your operations and your agile organizational approach, and the opportunity to learn where it is you’re more or less able to move quickly—which can help inform where you might need to buy a business rather than build one


 #네트워크 효과의 활용 방안 고민 필요

 Research indicates that people and organizations learn more quickly as a result of network effects. The more people or organizations that you add to a common solution space, in other words, the more quickly learning occurs and the faster performance improves. 



 출처

 Mckinsey Insight

 https://www.mckinsey.com/business-functions/mckinsey-digital/our-insights/how-six-companies-are-using-technology-and-data-to-transform-themselves 

 제목

 How six companies are using technology and data to transform themselves

 영어 표현

 unleashing a wave of innovation 촉발시키다

 on steroids 강력한, 끝내주는

 harness 활용하다, 동력화하다

 rejigger 변경하다, 재조정하다

 unearth 발굴하다

 set apart from 에서 구별하다

 pivot 회전하다

 exponential 기하급수적인

 status quo 현재의 상황

 pronged 가닥이 진, 갈래진

 percolate 스며들다

Learning for Learning 

 #행동 변화를 위해 필요한 시간: 평균 66일 

 * the popular magazine Psychology Today concluded that it takes an average of 66 days for a behavior
   to become automatic.

 

 #환경 변화: Virtual, Digital Centric, Agile 

 * The COVID-19 pandemic is a full-stop on business as usual and a launching pad for organizations
   to become
virtual, digital-centric, and agile

 * The crisis has forced every company into a massive experiment in how to be more nimble, flexible, and fast.


  #잘하고 있는 기업들의 특징

 * digital fast, ready to reinvent, all-in, data-driven decisions, customer followers


 #새로운 기술에 대한 reskilling training 필요 

Addressing its considerable reskilling needs—the majority of Tabang’s workers have no more than
a high school education—resulted in the development of a mobile app with popular gamification elements,
ensuring that employees would stay engaged and complete their training. 


 # Action 중요 

* " A learn-fast culture means we put things into action,” he says. “We don’t sit around thinking about it.”


반응형


※ 학습 노트

학습 날짜

 2020년 1월  

학습 사이트 

 인프런

과정 제목

 파이썬입문과 크롤링기초 부트캠프 (2020 업데이트) [쉽게! 견고한 자료까지!] 

학습 시간

 72강/941분

의견

 - 크롤링이 뜻대로 되지 않는 부분에 대한 팁을 얻기 위해 등록한 과정이기 때문에 

   스파르타 코딩 클럽에서 배운 것과 겹치는 부분은 스킵하고 필요한 부분부터 우선적으로 듣기로 함

 - 개념적인 것을 엄청 자세하게 설명해서 초보자(나)에게 좋음. 기존에 배운 것 복습 + 빈 곳을 채우는 느낌

 - 10~20분 단위로 micro하게 구성

 학습 모듈

 크롤링과 웹 기본 - 실전부분 




크롤링과 웹 기본__패턴으로 실습하며 익히기: HTML/CSS 이해를 바탕으로 크롤링하기

* 크롤링 패턴 코드

import requests
from bs4 import BeautifulSoup

res = requests.get('https://news.v.daum.net/v/20170615203441266')
soup = BeautifulSoup(res.content, 'html.parser')

mydata = soup.find_all('span','txt_info')
for item in mydata:
print (item.get_text())


*meta tag는 검색 엔진에 해당 페이지를 잘 검색할 수 있도록 쓰이는 경우가 많음

*해당 tag가 html 내에서 여러 군데 사용되고 있는 경우 class를 활용

*크롤링을 하고 싶은 부분이 class를 여러 개 사용 있는 경우,  class를 띄어쓰기 포함 그대로 사용

*mydata.get_text 또는 mydata.string 사용



크롤링과 웹 기본__패턴으로 실습하며 익히기: 실전 크롤링과 강력한 크롤링 기술 팁 

* 오픈 크롬 개발자 모드를 오픈 

   : 윈도우 Ctrl + Shift + i 또는 F12

* 원하는 영역 오른쪽 클릭한 후 copy > Copy outer html 복사 가능

* find()로 더 크게 감싸는 html 태그로 추출 후, 추출된 데이터에서 find_all()로 원하는 부분을 추출

* 문자 전처리할 때: strip(), split() 함수 사용

* 리스트에 숫자 붙일 때

for index, title in enumerate(titles):
print(str(index+1)+'.', title.get_text().split()[0].string())



크롤링과 웹 기본__CSS selector 사용해서 크롤링하기

* select()안에 태그 또는 CSS class 이름 등을 넣으면 결과값은 리스트 형태로 반환됨

* 하위 태그는 스페이스로 구분

* 모든 단계의 태그를 다 적을 필요는 없지만, 바로 밑의 태그에 해당하는 부분을 추출하고 싶을 때는 ul > a  식으로 > 사용

* class 이름을 사용하고 싶을 때에는 .사용, class 여러 개일때도 .사용하여 이어줌  

  id 는 # 사용 

* find()/select()로 가져온 객체는 find()/select() 모두 교차 사용 가능



바로 실전 크롤링해보기: 네이버 쇼핑 사이트 크롤링하기

#네이버쇼핑 best100 인기검색어

import requests
from bs4 import BeautifulSoup

res = requests.get('https://search.shopping.naver.com/best100v2/main.nhn')
soup = BeautifulSoup(res.content, 'html.parser')

items = soup.select('#popular_srch_lst > li > span.txt > a')
for item in items:
print(item.get_text())


#네이버쇼핑 특정 카테고리 상품 제목 

import requests
from bs4 import BeautifulSoup

res = requests.get('https://search.shopping.naver.com/search/all?frm=NVBT100&origQuery=%EB%8B%A4%EC%9D%B4%EC%96%B4%EB%A6%AC&pagingIndex=2&pagingSize=40&productSet
=total&query=%EB%8B%A4%EC%9D%B4%EC%96%B4%EB%A6%AC&sort=rel&timestamp=&viewType=thumb')
soup = BeautifulSoup(res.content, 'html.parser')

items = soup.select('div.imgList_title__3yJlT > a')

for item in items: print(item.get_text()) 


#네이버증권 인기검색종목

import requests
from bs4 import BeautifulSoup

res = requests.get('https://finance.naver.com/sise/')
soup = BeautifulSoup(res.content, 'html.parser')

items = soup.select('#popularItemList > li > a')
for item in items:
print(item.get_text())



또다른 크롤링 기술, urllib 라이브러리 사용법 이해

* 기존에는 urllib+bs4 세트로 많이 사용하였는데, 최근에는 requests + bs4 세트를 많이 사용

  기존 코드 중 일부가 urllib 사용하는 경우가 있으며 인코딩 처리가 다름

* requests 라이버리를 사용해서 크롤링 진행하고, 문제가 있는 경우만 urllib 시도

from urllib.request import urlopen #urllib request class에 들어있는 urlopen 함수만 필요
from bs4 import BeautifulSoup

res = urlopen('https://davelee-fun.github.io/')
soup = BeautifulSoup(res, 'html.parser')

items = soup.select('h4.card-text')
for item in items:
print(item.get_text().strip())



여러 페이지 한번에 크롤링하는 기법

* 주소에있는 페이지 번호를 활용하여 for 구문 사용

import requests
from bs4 import BeautifulSoup

for page_num in range(10):
if page_num == 0:
res = requests.get('https://davelee-fun.github.io/')
else:
res = requests.get('https://davelee-fun.github.io/page' + str(page_num + 1))
soup = BeautifulSoup(res.content, 'html.parser')

data = soup.select('h4.card-text')
for item in data:
print(item.get_text().strip())



크롤링해서 엑셀 파일로 데이터 저장하기

* openpyxl 라이브러리 활용

* 함수 설정

import openpyxl

def write_excel_template(filename,sheetname,listdata):
excel_file = openpyxl.Workbook() #엑셀 파일 오픈
excel_sheet = excel_file.active #엑셀 시트 선택

if sheetname !='': #시트이름이 없으면 넘어가기
excel_sheet.tile = sheetname

for item in listdata:
excel_sheet.append(item)
excel_file.save(filename)
excel_file.close()


* 크롤링해서 저장하기

import requests
from bs4 import BeautifulSoup

product_lists = list()

for page_num in range(10):
if page_num == 0:
res = requests.get('https://davelee-fun.github.io/')
else:
res = requests.get('https://davelee-fun.github.io/page'+str(page_num+1))
soup = BeautifulSoup(res.content,'html.parser')

data=soup.select('div.card')
for item in data:
product_name = item.select_one('div.card-body h4.card-text')
product_date = item.select_one('div.wrapfooter span.post-date')
product_info = [product_name.get_text().strip(),product_date.get_text()]
product_lists.append(product_info)

write_excel_template('tmp.xlsx','상품정보',product_lists)


* 엑셀파일 불러오기

for item in excel_sheet.rows:
print (item[0].value, item[1].value) #셀에 들어있는 값을 가져오기 위해 .value를 붙여줌


excel_file.close()




반응형


※ 학습 노트

학습 사이트 

 인프런

과정 제목

 파이썬입문과 크롤링기초 부트캠프 (2020 업데이트) [쉽게! 견고한 자료까지!] 

학습 시간

 72강/941분

의견

 - 크롤링이 뜻대로 되지 않는 부분에 대한 팁을 얻기 위해 등록한 과정이기 때문에 

   스파르타 코딩 클럽에서 배운 것과 겹치는 부분은 스킵하고 필요한 부분부터 우선적으로 듣기로 함

 - 개념적인 것을 엄청 자세하게 설명해서 초보자(나)에게 좋음. 기존에 배운 것 복습 + 빈 곳을 채우는 느낌

 - 10~20분 단위로 micro하게 구성

 학습 모듈

 강의 준비

 파이썬과 프로그래밍 기초를 견고하게 쌓는 가장 좋은 방법 - skip

 파이썬 객체와 라이브러리 - skip

 크롤링과 웹 기본 



강의준비_데이터과학과 IT 영역에서의 파이썬과 크롤링 큰그림 이해하기

* 영역: 웹, 앱, 응용 프로그램, IoT, 인공지능

* 단계: 데이터 수집 - 저장 - 분석 - Visualization - 서비스 개발



강의준비_프로그래밍 언어 기초와 파이썬 이해

* 프로그래밍 언어: 인간이 컴퓨터와 소통할 수 있도록 컴퓨터가 이해할 수 있는 명령으로 프로그램을 작성할 수 있도록 만든 언어

  - 컴퓨터는 기계어 (0과 1로 된 이진수 형태로 CPU가 이해할 수 있는 코드)만 이해한다



강의준비_anaconda와 jupyter notebook 소개와 설치

* 아나콘다(anaconda) 확장 기능 + 컴파일러 프로그램까지 한 번에 설치할 수 있는 프로그램

  - 파이썬 기본(컴파일러), 주요라이버리, 주요툴(jupyter notebook포함)을 모아놓은 패키지

  - 컴파일러 고급 언어로 작성된 코드를 기계어로 변환하는 프로그램



크롤링과 웹 기본_패턴으로 실습하며 익히기: 크롤링 코드 패턴으로 이해하기

  #라이브러리 임포트

 import requests

 from bs4 import BeautifulSoup

 #웹페이지 가져오기

 res = requests.get('사이트주소')

 #웹페이지 파싱하기

 soup = BeautifulSoup(res.content, 'html.parser')

 #필요한 데이터 추출하기 

 mydata = soup.find('title')

 #추출데이터 활용하기

 print(mydata.get_text()) 


* 웹기본구조

- 네트워크를 통해 내 컴퓨터와 다른 컴퓨터를 연결하고 정보를 주고 받을 수 있음

- 어떤 컴퓨터에서 정보를 받아올지 지칭하는 주소가 IP주소

- IP 주소를 이름으로 표기한 것이 웹주소 

- 주소를 넣으면 html로 구성된 파일을 달라고 요청하고 html은 해당 정보를 웹브라우저 안에서 보여줌


* 파싱 문자열의 의미를 분석하는 것


* 데이터 추출

soup.find('html코드')

변수.get_text




HTML


크롤링과 웹 기본_크롤링을 위한 지식: 웹구조와 HTML 이해하기

* 웹페이지는 HTML, CSS, javascript로 표현

* HTML

   - HTML은 마크업 언어: 문서나 데이터의 구조를 표현하는 언어

   - HTML 언어 : 웹페이지를 만드는 언어

   - 꺽쇠 <>와 tab로 표현

* Sublime Text 3 프로그램: HTML 에디터


*HTML 기본구조

<!DOCTYPE html> 이 문서는 HTML 언어를 사용

 <html> 여기서부터 HTML 문서 시작

 <head> 문서 전체 정보 (제목 등)

 </head>

 <body> 실제 웹페이지 표현되는 내용

 </b> enter

 </body> 

 </html>


  <head>

 <title> 제목 </title> 웹페이지의 타이틀이라 본문에 표시되지 않지만 탭에서 확인 가능

 <meta charset="utf-8"> 글씨가 깨질 때 추가 

 </head>


*태그 속성

<태그 속성(속성 이름, 속성 값) 속성 속성>

- 속성과 속성 사이는 한 칸씩 띄어야함


*구조화된 태그 (테이블)

  <table border="1">

   <thead> 한 테이블의 타이틀(표 머리글)

      <tr>

          <th>1*1</th>

      <tr>

   </thead>

   <tbody> 본문 내용

      <tr>

          <td>1*1</td> 

      <tr>

  </tbody> 

 </table>



크롤링과 웹 기본_패턴으로 실습하며 익히기: HTML 이해를 바탕으로 크롤링하기

*속성을 가져오는 방법

soup.find('태그')

 

#예시

 data =soup.find('p', class_='cssstyle') #클래스가 cssstyle을 가져오는 것

 data =soup.find('p', attrs={class':'cssstyle') #속성과 속성값을 그대로 기입 / 속성 여러 개 나열 가능

 data =soup.find('p', 'cssstyle')

 data =soup.find('p', id='body') 


 datas =soup.find_all #전체 다 찾아주나 리스트 형태로 보여주기 때문에 for 구문써줘야함

 for find_data in find_datas:

      print (find_data.get_text())


* 크롤링에서 가장 많이 쓰는 속성은 class이고 css 언어와 관련


CSS


크롤링과 웹 기본_크롤링을 위한 지식: 웹구조와 CSS  이해하기

* HTML로 웹페이지 구조(내용)을 표현하고 CSS언어를 활용하여 디자인하는 것이 일반적

* CSS 언어 적용 방법 

  1) 적용할 태그에 style 속성으로 넣기

  2) HTML문서 <head>안에 <style>태그로 넣기

  3) HTML문서 <head>안에 CSS파일 링크하기

* css언어는 프로퍼티와 프로퍼티 값으로 이루어짐. 

* 프로퍼티 정의는 구글 검색하여 css tutorial 활용


* 적용 방법 별 예시

  1) 적용할 태그에 style 속성으로 넣기

<td style ="text-align:center; color:blue">

세미콜론으로 구분해서 프로퍼티와 값을 연속으로 사용 가능. 띄어쓰기 해도 되고 안해도 됨


  2) HTML문서 <head>안에 <style>태그로 넣기

<style type="text/css">

td{

    font-size: 2em; 화면에서 디폴트로 보여주는 폰트의 2배

    font-family: Gulim;

    text-align: center;

}

</style>


 3) HTML문서 <head>안에 CSS파일 링크하기  매 페이지마다 head를 쓸 필요 없이 css 파일을 만들어놓고 페이지에 링크 가능

통상 css라는 확장자를 사용하여 파일 저장

#특정 태그에 css 설정 적용할 때

<link rel="stylesheet" type="text/css" href="css/style.css"> css파일이 들어있는 폴더와 파일명 


#.이름을 써서 별도의 css를 설정하여 내가 원하는 곳에 적용하려고 할 때

#.highlight는 내가 설정한 이름이며, class라고 부름 

.highlight {

 font-size:3em; 

 text-align:right;

 color: blue;

 }


<td class="highlight"> #설정한 css를 사용하고 싶은 곳의 태그 안에 class로 표시

<td class=highlight> 


반응형




※ 학습 노트


이런 강의가 있다.


---


Data science from MIT 

 

Computer Science의 탑 1위 대학인 MIT 공대의 "Introduction to Computational Thinking and Data Science" 수업 영상 및 강의 자료를 한국어로 번역하여 여러분께 제공합니다.

해당 강좌에서는 데이터 과학이라는 분야를 시작하기 위한 알고리즘과 통계학 그리고 기계학습의 내용을 조금씩 나눠서 다루고 있으며, 프로그래밍 실습보다는 문제 해결방법 대해서 집중적으로 공부합니다. 본격적인 데이터 과학 분야에 진입하기에 앞서, 해당 분야를 배우기 위해서는 어떤 것을 더 학습해야 하는지 체험할 수 있는 강의입니다.


---


Edwith에서 수강할 예정이지만, MIT 강의라고 하니 글로벌 플랫폼에 업로드 되어있을 것 같아 찾아보았다.

>>edX와 Youtube에 있는 듯.

(Coursera에서 the most popular 과정 중 하나인 'Python for everybody(모두를 위한 파이썬)' 도 Edwith에 한글화된 버전으로 볼 수 있다.)





* 해당 분야를 배우기 위해서 어떤 것을 더 학습해야 하는지 체험할 수 있는 강의


학습해야할 새로운 영역들은 계속해서 생겨나는데, 

범위가 처음부터 정해져있지도 않거니와 계속해서 확장하고, 변화한다.

고등학교 때처럼 정해진 교과, 정해진 범위 내에서 체계적으로 공부하기가 어렵다.

(그때가 좋은 거였...다고 말하면 안되겠지..! ㅋ 그때는 그때만의 고통과 괴로움이 있었으니까-)


올해는 수행해야할 과제가 있어서 이것 저것 닥치는 대로 찾아보았다.

지금도 아주 초초초초보지만, 그래도 아주 처음보다는 들은 것, 본 것들이 생겼다.

학습 분야의 용어에 익숙해지는 것도 중요한 것 같다.


계속해서 업데이트하고 수정해야겠지만, 학습자만의 체계와 체크리스트를 만들어가는 것도 학습의 방법 중에 하나일 것 같아서,

조금씩 정리해보기로 했는데....



* 선수조건


1. 모두를 위한 프로그래밍: 파이썬

2. 모두를 위한 프로그래밍: 파이썬 자료구조

3. 모두를 위한 프로그래밍: 파이썬을 이용한 데이터베이스 처리

4. CS50 x edwith

5. Introduction to Computer Science and Programming in Python



그런데, 당황스럽게도 선수조건이 왜이렇게 많지...! ㅋㅋㅋ 해당 분야를 배우기 위해 어떤 것을 더 학습해야하는지 체험할 수 있는 강의라고 하여 아주아주 생초보자를 위한 것인줄 알았건만.!


다행히, 모두를 위한 프로그래밍을 학습한 후이긴하지만,

불행히, 이미 시간이 지나기도 했고, 학습을 기록해놓지를 않았기에, 

선수 조건인 과정부터 점검해보기로 하였다.


그런데 맙소사 ㅠ 내가 이미 들은 줄 알았던 과정도 '모두를 위한 프로그래밍: 파이썬' 만이다. 

갈길이 멀군



[모두를 위한 프로그래밍: 파이썬 자료구조] 부터 시작한다.

(Chapter 6~8)


*** 알아야할 것 : 타입 변환, 인덱싱, len 함수, for 루프


* len 함수 : 문자의 길이 >>>리스트가 몇 개의 항목을 가지고 있는지 확인 가능

* print(s[0:4]) - 4번째 인덱스는 읽지 않음!

  print(s[:2]) - 첫 번째나 마지막 인덱스 생략할 경우, 시작 또는 마지막까지 가정하고 반환

* strings는 object이고 object는 method라는 것을 가지고 있음

* replace (문자바꾸기)

* lstrip (왼쪽 공백 없애기), rstrip (오른쪽 공백 없애기), strip (양쪽 공백 없애기)

* startwith (시작 문자열 찾기)

* 파이썬3에서부터는 모든 내부 문자열이 유니코드 (한국어가 예시로 나온다!)

  유니코드 연산이어도 문자열로 인식. (파이썬3에서는 문자열이지만 유니코드 상수가 별개로 있었고 다른 자료형으로 인식함)

* open() 파일을 여는 것

\n >>> 다음 줄로

* read()

통상 프로그래밍은 알고리즘과 자료구조로 나눌 수 있음

   - 알고리즘: 특정 문제를 해결 하기 위한 규칙 또는 단계

   - 자료구조: 컴퓨터 내에서 자료를 구조화 하는 특별한 방식


* list(리스트)

  1. 리스트의 각 항목들은 '[]'로 둘러싸임
  2. 리스트 내의 항목들에 대한 구분은 ,(콤마)로 구분
  3. 리스트 내에 또 다른 리스트를 내포할 수 있음
  4. 비어 있는 리스트를 만들 수 있음
  5. 리스트의 항목들에 인덱스 값으로 접근 가능.
  6. 리스트의 항목들은 바뀔 수 있음


* range() >>> 인자로 전달되는 값에 따라서 숫자로 이루어진 리스트를 반환


* .list() >>> 리스트 만들기

* .append('book') >>리스트에 추가

* .sort() >>> 정렬

* .split() >>> 공백을 찾아 조각을 반환

  .split(';') >>> 세미콜론 기준으로 Split해주지 않으므로 별도 정의


* 컬렉션(collection)리스트나 딕셔너리 같은 변수를 가지는 상황. 하나의 정보보다는 여러 개의 정보를 저장할 때 사용

* 리스트(list): 순서대로 정렬한 컬렉션. 데이터를 추가하면 항상 리스트의 끝에 추가되고 0부터 n-1번 위치까지 순서대로 n개의 원소가 저장됨

딕셔너리(dictionary)

- 순서 없음. 대신 키(Key) 존재

-ooo={} 또는 dict()라는 생성자를 통해 생성

- {중괄호} 안에 Key:Value 형태로 저장


* get 함수 : 

counts.get(name,0)


>>>딕셔너리에 name이라는 키가 존재할 경우 값을 불러오고,

그렇지 않을 경우에는 딕셔너리의 name이라는 키에 0이라는 값을 갖는 데이터를 추가하라는 의미

if name in counts:

   x = counts[name]

else :

   x = 0 

 x = counts.get(name,0) 


* items 메소드

keys, values 메소드로는 딕셔너리의 키와 값의 쌍을 얻음 >>> items 메소드를 사용하면 됨

items 메소드를 실행하면 '튜플(tuple)'이라는 자료 구조 안에 키와 값이 쌍을 이루어 저장된 리스트가 반환됨


* Tuples(튜플) 리스트와 거의 비슷하지만 변경불가능(immutable), 즉 값 변경 (정렬, 값 추가, 순서 변경) 불가하다는 특성에서 차이가 있음

그러나 리스트보다 훨씬 효율적으로 작동함 (용량 적게 차지, 근 빠름)

* 내장된 함수 차이

l = list()

 dir(l)

# ['append', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']

  t = tuple()

 dir(t)

# ['count', 'index']


* sorted 함수 :  딕셔너리는 키 기준으로 정렬된 값이 나옴

반응형

※복습 노트


* 파이썬 공식 스타일 가이드 


  - https://www.python.org/dev/peps/pep-0008/


  - https://docs.python.org/ko/3/tutorial/controlflow.html#intermezzo-coding-style



* List와 Dictionary


a_list = [ ] #비어있는 리스트 만들기

a_list.append() #리스트에 값을 넣는다


a_dict = { }



* 파이썬 명령어

def 함수이름 (필요한 변수들) :

   내릴 명령어들을 순차적으로 작성

#사용하기

함수이름(필요한 변수들  



* 파이썬 조건문

 def is_even(num): # is_even는 num을 변수로 받는 함수 이름 

      if num % 2 == 0: # num을 2로 나눈 나머지가 0이면 

           return True # True (참)을 반환한다. 

      else: # 아니면, 

           return False # False (거짓)을 반환한다.

 #html 조건문

 function is_even(num){

    if (num % 2 == 0) {

       return true; 

    } else {

       return false; 

    }

 } 



* 파이썬 반복문


 fruits = ['사과', '배', '참외'] 

 for fruit in fruits# fruit는 임의로 지은 이름 

      print (fruit)

 #html 반복문

 let fruits = ['사과','배','참외']

 for (let i=0; i<fruits.length; i++) {

      console.log(fruits[i])

 }



* 파이썬 조건문 & 반복문으로 숫자 세기


 fruits = ['사과', '배', '배', '감', '수박', '귤', '딸기', '사과', '배', '수박'] 

 def count_fruits(name): 

 count = 0 

 for fruit in fruits:

 if fruit == name: 

      count += 1 

 return count 


 subak_count = count_fruits('수박') 

 print(subak_count) # 수박의 갯수 출력

 #html 조건문 & 반복문으로 숫자 세기

 let fruits = ['사과', '배', '배', '감', '수박', '귤', '딸기', '사과', '배', '수박'] 

 

 let count =0;

 for (let i=0; i<fruits.length; i++) {

    let fruit == fruits[i];

    if (fruit =='수박'){

       count +=1;

    }

 }

 



* 웹스크래핑

  - 패키지 설치 : beautifulsoup4 HTML 코드를 쉽게 스크래핑 해오기 위한 도구

  - 태그 안의 텍스트를 찍고 싶을 땐 → 태그.text

    태그 안의 속성을 찍고 싶을 땐 → 태그['속성']



import requests
from bs4 import BeautifulSoup

headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36'}
data = requests.get('https://sports.news.naver.com/kbaseball/record/index.nhn?category=kbo', headers=headers)

# HTML BeautifulSoup이라는 라이브러리를 활용해 검색하기 용이한 상태로 만듦
# soup이라는 변수에 "파싱 용이해진 html"이 담긴 상태가 됨
# 이제 코딩을 통해 필요한 부분을 추출하면 된다.


soup = BeautifulSoup(data.text, 'html.parser') 


*크롤링한 내용에서 공백 없애기 .text.strip()


반응형

+ Recent posts