본문 바로가기
Review

[코딩애플] 파이썬 업무자동화 8월 강의 2주차

by YEON-DU 2020. 8. 16.
반응형
# 변수(variable) - 데이터가 저장되는 공간
# 상수(constant) - 지원하지 않음
# 데이터 타입 - 문자열, 숫자, (리스트, 딕셔너리) => json
# 반복문 - 코드를 반복시키는 문법 (for, while)
# 조건문

 

파이썬은 상수를 지원하지 않는다. (new!)

2주차에서는 bool 데이터 타입과 조건문에 대하여 배웠다.

 

# var_dict 딕셔너리 변수에 a라는 키가 존재하지 않으면 10이라는 값으로 초기화를 하고 없으면 그대로 둬라
var_dict.setdefault('a', 10)

 

그리고 간단한 딕셔너리 변수에서 사용하는 setdefault함수에 대하여 배웠다.

dict.setdefault('key', value)

라고 볼 수 있는데, 해당하는 key가 존재하지 않을 때 딕셔너리의 key에 접근하게 되면 오류가 발생하게 되므로 유용하게 사용되는 함수라고 한다.

 

splited = var.split(' ')
frequency = {} # 단어 : 등장횟수

for word in splited:
    # frequency.setdefault(word, 0) 과 frequency[word] = frequency.get(word, 0)는 동일
    frequency[word] = frequency.get(word, 0) + 1

 

var이라는 여러 줄 문장을 띄어쓰기 대로 나누어 저장한 splited를 사용해서

단어의 등장 횟수를 구하는 방식이다.

이때 frequency[word] = frequency[word] + 1 이라는 단순한 방식으로 작성할 수 있겠지만

앞서 말했듯이 frequency[word]에서의 word라는 key 값이 최초 등장 시에는 오류가 발생하면서 (값을 찾을 수 없기 때문에) 컴파일이 되지 않는다. 따라서 이때에 setdefault를 사용하거나 frequency.get(word, 0) 이라는 word라는 key값을 얻어올 수 없으면 0을 가져온다는 함수를 사용하여 한 줄로 만들어줄 수 있다.

 

# 조건문 : 조건에 따라서 코드를 실행할 지 말지 결정하는 단락
# 데이터타입 : boolean 타입 => 참(True) / 거짓(False)

 

그밖에도 현재 파이썬 최신 버전에서의 변경사항을 Release Note에서, 그 밖에 다음의 변경사항에서 제거되거나, 변경될 사항은deprecation에서 확인할 수 있다고 한다.

 

bool 연산자는 다른 언어와 동일하니 넘어가도록 하고, 조금 다른 점은 C언어처럼 0일 때 False, 그 외의 숫자는 True로 취급한다는 점만 기억해두면 될 것 같다.

 

# 비교연산자
#   대소비교 (<, >, <=, >=, ==)

a = 10
b = 20
print(a == b)

# 관계연산자
#  여러 개의 True/False를 재조합해서 하나의 True,False를 만들어 줌
#  여러 가지의 상황에 따라 한 가지의 실행유무를 결정

a = True
b = False
c = True
d = False

# and(*), or(+)

print(a and b)
print(a or b) # 0은 False, 0을 제외한 모든 수는 True

# and 연산은 하나라도 False가 있으면 결과는 False
# or 연산은 하나라도 True가 있으면 결과는 True

# 관계 연산자이긴 한데 독립적으로 쓰이는 not 연산자가 있음
print(not a)

# 무언가가 존재하지 않을 때 어떤 코드를 실행해라
is_exist = True
is_exist = False

if not is_exist : ## is_exist == False와 동일
    print('없어서 실행')

 

다른 사항도 and, or, not 처럼 표기법이 다른 점을 빼면 동일하다.

 

찾고자 하는 데이터가 홈페이지 소스 보기 시의 데이터 (JavaScript로 덧붙여지는 코드가 제외된 코드) => 존재한다면 html로 분석

f12로 보여지는 개발자도구에서 나오는 곳에서는 데이터가 존재할 때 => 네트워크 탭에서 데이터를 찾아서 분석 (JSON 등)

이 데이터는 서버에 따로 요청해서 받아오게 된 데이터이다. 이런 데이터를 분석할 때에는 따로 자료를 찾아서 분석해야한다.

 

# class .
#   .nick
# id    #
#   #info

# .nick#info : class가 nick이면서 id가 info인 것
# .nick #info : class가 nick이면서 하위의 id가 info인 것 (띄어쓰기는 하위를 의미)
# div#info p.nick : div의 id가 info이면서 p태그의 class가 nick인 것
#   => css selector

# 완벽한 크롤러는 존재하지 않음
# 범용 크롤러도 존재하지 않음 (cafe24 기반으로 만들어진 쇼핑몰들과 같이 동일한 방식으로 제작된 사이트의 경우는 가능)

 

Angular state inspector

React Developer Tools

Vue.js devtools

 

이 세 가지를 다운로드 받아서 (Google Chrome Extension) 페이지를 분석할 때 셋 중 어느 언어로 만들어진 페이지인 지 알 수 있어서 유용하다고 한다. 이 밖에는 bs4 라이브러리를 사용하여 html 형태로 전달되는 데이터를 분석하는 방법에 대해 배웠다.

 

requests와 bs4 라이브러리를 배우게 되면서 단순한 파싱은 간단해진 느낌이다.

구체적으로 만들어볼 크롤러가 있다면 한 번 시도해보고 싶다!

반응형

댓글