# 변수(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 라이브러리를 배우게 되면서 단순한 파싱은 간단해진 느낌이다.
구체적으로 만들어볼 크롤러가 있다면 한 번 시도해보고 싶다!
'Review' 카테고리의 다른 글
[코딩애플] 파이썬 업무자동화 8월 강의 4주차 完 (0) | 2020.08.30 |
---|---|
[코딩애플] 파이썬 업무자동화 8월 강의 3주차 (0) | 2020.08.23 |
[코딩애플] 파이썬 업무자동화 8월 강의 1주차 (0) | 2020.08.09 |
2020 상반기 NBP 면접 후기 (0) | 2020.07.16 |
일본어 오픽 후기 (2) | 2020.06.22 |
댓글