파이썬(Python)을 설치한다는 것의 의미
일종의 번역팩을 설치한다고 생각하면 된다.
파이썬 문법으로 된 것을 컴퓨터가 알아들을 수 있도록 변환해주고 프로그래밍을 쉽게 할 수 있는 기본코드를 설치하는 것이다.
파이썬 기초
파이썬에서는 들여쓰기로 블록 단위를 나눈다.
들여쓰기를 잘못하면 들여쓰기 에러가 발생하므로 들여쓰기가 매우 중요하다.
함수
# 만들기
def 함수이름(필요한 변수들) :
내릴 명령어들을 순차적으로 작성
# 사용하기
함수이름(필요한 변수들)
조건문
def 함수이름(변수) :
if 조건 :
return 명령어
elif 조건 :
return 명령어
else :
return 명령어
반복문
배열이름 = [값1, 값2, 값3 ...]
for 임의명 in 배열이름 :
print(임의명)
파이썬 패키지(package)
패키지는 모듈(일종의 기능들 묶음)을 모아 놓은 단위이다.
이런 패키지의 묶음을 라이브러리라고 볼 수 있다.
여기서는 외부 라이브러리를 사용하기 위해서 패키지를 설치한다.
즉, 패키지 설치 = 외부 라이브러리 설치
가상환경(virtual environment)
같은 시스템에서 실행되는 파이썬 응용 프로그램들의 동작에 영향을 주지 않으면서,
파이썬 배포 패키지들을 설치하거나 업그레이드하는 것을 가능하게 하는 격리된 실행 환경이다.
setting - project interpreter - virtual environment - New environment - Location을 현재폴더/venv로 설정
현재폴더/venv에 가상환경이 설정되고 패키지 두가지가 설치된다. (pip, setuptools)
새로운 프로젝트의 라이브러리를 가상환경에 설치하려면 pip를 이용하게 된다.
웹 스크래핑(크롤링)
웹 스크래핑(web scraping)은 웹 페이지에서 우리가 원하는 부분의 데이터를 수집해오는 것이다.
한국에서는 크롤링이라고 부르기도 한다.
pip를 통해 requests와 beautifulsoup4 패키지를 설치한다.
requests는 API를 사용할 때 주로 사용하는 모듈이다.
beautifulsoup4는 HTML 코드를 쉽게 스크래핑 해오기 위한 도구이다.
import requests
from bs4 import BeautifulSoup
# 타겟 URL을 읽어서 HTML을 받아온다.
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://movie.naver.com/movie/sdb/rank/rmovie.nhn?sel=pnt&date=20200716',headers=headers)
# HTML을 BeautifulSoup 이라는 라이브러리를 활요해 검색하기 용이한 상태로 만든다.
# soup이라는 변수에 "파싱 용이해진 html"이 담긴 상태가 된다.
# 그 후에 코딩을 통해 필요한 부분을 추출한다.
soup = BeautifulSoup(data.text, 'html.parser')
# select를 이용해서 tr들을 불러오기
movies = soup.select('#old_content > table > tbody > tr')
# movies(tr들)의 반복문 돌리기
for movie in movies:
a_tag = movie.select_one('td.title > div > a')
# movie 안에 a가 있으면,
if a_tag is not None:
# a의 text를 찍어본다.
print(a_tag.text)
beautifulsoup 내 select에 미리 정의된 다른 방법들
# 선택자를 사용하는 방법
soup.select('태그명')
soup.select('.클래스명')
soup.select('#아이디명')
soup.select('상위태그명 > 하위태그명 > 하위태그명')
soup.select('상위태그명.클래스명 > 하위태그명.클래스명')
# 태그와 속성값으로 찾는 방법
soup.select('태그명[속성="값"]')
# 한 개만 가져오고 싶은 경우
soup.select_one('태그명[속성="값"]')
Create: 생성. ex) 사용자가 게시글 쓰기
Read: 읽기. ex) 게시글 보기
Update: 갱신, 업데이트. ex) 게시글 수정
Deleted: 삭제. ex) 게시글 삭제
첫번째는 RDBMS(SQL)이다. 행/열의 생김새가 정해진 엑셀에 데이터를 저장하는 것과 유사하다. 정형화되어 있는 만큼, 데이터의 일관성이나 분석에 용이하다.
ex)postgreSQL, MySQL
두 번째는 No SQL이다. 딕셔너리 형태로 데이터를 저장해두는 DB이다. 같은 값을 가진 데이터들도 자유롭게 저장이 가능하다. 자유로운 형태의 데이터 적재에 유리한 대신 일관성이 부족할 수 있다.
ex) MongoDB
mongoDB
robo 3T
mongoDB 프로그램은 눈에 보이지 않는다. (=유저 인터페이스를 제공하지 않는다.)
robo 3T는 데이터를 저장한 DB내부를 살펴보기 위한 GUI를 제공한다.
pymongo
pymongo는 MongoDB를 쉽게 조작하기 위한 라이브러리이다.