본문 바로가기
웹 개발

[내일배움단] 웹개발 종합반 3주차 개발일지

by evekang 2022. 5. 16.

 

 

이번주 수업목표는

1. 파이썬 기초 문법을 안다.

2. 원하는 페이지를 크롤링 할 수 있다.

3. pymongo를 통해 mongoDB를 제어할 수 있다.

이다!!!

 

벌써 3주차라니!! 아자아자!!! 힘내보자!!!!

 

저번주에 ajax를 공부했고 드디어 이번주부터 파이썬과 DB에 들어간다.

 

 

 

파이썬을 설치한다는 것은?

일종의 번역팩을 설치한다는 것과 같다. 컴퓨터는 0과 1밖에 알아듣지 못하기 때문에 사람의 언어와 비슷하게 만든 것이다.

 

 

 

파이썬 기초 문법

1) 변수와 기본 연산은 자바스크립트와 동일하다.

2) 변수에는 문자열이 들어갈 수도 있고, 숫자가 들어갈 수도 있고 Bool이 들어갈 수도 있고, List랑 DIctionary도 들어갈 수 있다.

3) 리스트와 딕셔너리형 또한 자바스크립트 문법과 동일하다.

4) 함수는 def를 붙여 정의하며, 함수명 뒤에 파라미터를 붙이고 :(세미콜론)을 붙인다.

주의할 것은 한칸 탭으로 띄워 작성해야 함수 안의 내용물이라고 인식하고 작동한다는 것.

def sum_all(a,b,c):
	return a+b+c

def mul(a,b):
	return a*b

result = sum_all(1,2,3) + mul(10,10)

5) 조건문은 자바스크립트와 동일하다.

6) 반복문은 좀 특이한데 아래와 같다.

fruits = ['사과','배','감','귤']

for fruit in fruits:
	print(fruit)

# 사과, 배, 감, 귤 하나씩 꺼내어 찍힙니다.

파이썬: 어차피 원소 하나씩 꺼내서 쓸거 아니야~ 그럼 내가 for문을 이렇게 직관적으로 바꿔줄게! 

 

fruits 리스트 안에 원소를 하나씩 돌려서 fruit 변수에 담아서 내준다.

 

 

 

 

 

파이썬 패키지 설치하기

Windows : [File - Settings..] 

Mac : [PyCharm - Preference]

 

Python Interpreter - [+] 버튼 클릭

 

'requests' 검색 후 왼쪽 리스트에서 클릭, install Package 클릭하여 설치.

 

 

 

 

패키지 사용해보기

설치 완료한 requests를 사용하려면 기본 문구가 필요하다.

import requests # requests 라이브러리 설치 후 임포트

# 아래 링크에서 가져와서(get) r에 담겠다.
r = requests.get('http://openapi.seoul.go.kr:8088/6d4d776b466c656533356a4b4b5872/json/RealtimeCityAir/1/99')

#가져온 r을 json형태로 rjson에 담겠다.
rjson = r.json()

#rjson의 구성요소 중 원하는 것을 가져온다. RealtimeCityAir의 row의 0번째의 NO2를 가져와라.
print(rjson['RealtimeCityAir']['row'][0]['NO2'])

 

 

 

웹스크래핑(크롤링)

: 이미 내가 받은 페이지의 자료를 가지고 그 안에서 솎아 내는 것.

: 크롤링할 때 필요한 2가지

1) 코드 단에서 요청하는 것 : requests

2) 요청해서 가지고 온 html들 중에 내가 원하는 정보를 잘 솎아내는 것 : beautifulsoup4(bs4)

 

 

 

 

크롤링 기본 세팅

# requests와 bs4 임포트
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=20200303',headers=headers)

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

#############################
# (입맛에 맞게 코딩)
#############################

 

태그 안의 텍스트를 가져오고 싶을 땐 태그.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://movie.naver.com/movie/sdb/rank/rmovie.nhn?sel=pnt&date=20200303',headers=headers)

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

# select를 이용해서, tr들을 불러오기
movies = soup.select('#old_content > table > tbody > tr')

# movies (tr들) 의 반복문을 돌리기
for movie in movies:
    # movie 안에 a 가 있으면,
    a_tag = movie.select_one('td.title > div > a')
    if a_tag is not None:
        # a의 text를 찍어본다.
        print (a_tag.text)

 

 

beautifulsoup 내 select에 미리 정의된 다른 방법

# 선택자를 사용하는 방법 (copy selector)
soup.select('태그명')
soup.select('.클래스명')
soup.select('#아이디명')

soup.select('상위태그명 > 하위태그명 > 하위태그명')
soup.select('상위태그명.클래스명 > 하위태그명.클래스명')

# 태그와 속성값으로 찾는 방법
soup.select('태그명[속성="값"]')

# 한 개만 가져오고 싶은 경우
soup.select_one('위와 동일')

 

 

 

DB 개괄

스파르타코딩클럽에서는 mongoDB와 Robo3T를 사용한다.

우리가 사용할 데이터베이스인 mongoDB는 사용자가 보이지 않게 켜져서 작동한다.

Robo3T는 안보이는 mongoDB를 우리가 볼 수 있도록 시각화해주는 프로그램이다.

 

 

 

 

데이터베이스가 왜 필요한가?

- 데이터를 잘 쌓고 보관하려고 (X)

- 데이터를 잘 갖다가 쓰려고(잘 찾으려고) (O)

ex) 책을 책장에 정리해서 꽃는 이유

 

 

 

 

DB의 2가지 종류

SQL(RDBMS) 엑셀형태로 열과 행을 미리 정해야 한다.
중간에 바꾸기가 불편하다.
정형화된 데이터로 추출이 편리하다.
데이터가 일관적이라 분석이 빠르다.
MSSQL, MYSQL, ORACLE 등
NoSQL
(Not Only SQL)
딕셔너리 형태로 개별적으로 저장된다.
데이터 하나하나마다 다르기 때문에 유연하다.
바뀔일이 많은 초기 서비스에서 많이 채택한다.
mongoDB

 

반응형

댓글