F/E 프로그래밍 독학기(3)

3주차 핵심내용

  • Python, 크롤링, mongoDB

Python 기초문법

  • 변수 & 기본연산
  • 자료형
    • 숫자, 문자형
    • 리스트형
    • Dictionary형
    • Dictionary형 + List형
  • 함수
  • 조건문
  • 반복문

웹 스크래핑 / 크롤링 이란?

크롤링(crawling)

  • 크롤링이란 단어는 웹 크롤러(crawler)라는 단어에서 시작한 말이다. 크롤러란 조직적, 자동화된 방법으로 월드와이드 웹을 탐색하는 컴퓨터 프로그램이다.(출처: 위키백과)

  • 크롤링은 크롤러가 하는 작업을 부르는 말로, 여러 인터넷 사이트의 페이지(문서, html 등)를 수집해서 분류하는 것이다.
    대체로 찾아낸 데이터를 저장한 후 쉽게 찾을 수 있게 인덱싱한다.

웹 스크래핑(scraping)

  • 스크래핑이란 HTTP를 통해 웹 사이트의 내용을 긁어다 원하는 형태로 가공하는 것이다.

  • 쉽게 말해 웹 사이트의 데이터를 수집하는 모든 작업을 뜻한다.

  • 크롤링도 일종의 스크래핑 기술이라고 할 수 있다.

mongoDB / Robo3T

mongoDB란?

  • '데이터베이스'의 역할을 하는 것으로 컴퓨터에 보이지 않게 프로그램을 돌리는 역할

  • MongoDB는 NoSQL로 분류되는 크로스 플랫폼 도큐먼트 지향 데이터베이스 시스템이다. MySQL 처럼 전통적인 테이블-관계 기반의 RDBMS가 아니며 SQL을 사용하지 않는다.

  • 이름의 mongo는 humongous를 줄인 표현이다. 즉 '겁나 큰 DB' 라는 뜻.

Robo3T란?

  • 위에 말했듯이 mongoDB는 컴퓨터 내에서 보이지 않게 프로그램을 돌리는 MySQL의 일종이며 이러한 데이터를 시각화 하는 역할을 roboT에서 진행한다

데이터베이스(DB)는 왜 사용할까?

  • 데이터를 잘 가져다 쓰기 위함이 최종적인 목적이다

  • 비유를 하자면 개인이 책을 읽기위해 집에 사왔는데 '방에 쌓아두는 것'과 '책장에 정리하여 쉽게쉽게 확인하는 것' 이 둘 중에 무엇이 더 편한가?
    결론적으로는 당연히 <'책장에 정리해 둔 것'이 더 사용하기 편하다> 이다
    이처럼 DB는 우리가 사용하는 무수한 프로그램 및 정보를 정리하는 공간을 주고 보다더 잘 가져다 쓰기 위한 역할이라고 생각하자

  • DB에 대한 개념이 잡혔으면, 이제 SQL 과 NOSQL에 대해 정리해보자

SQL VS NOSQL

출처: 코딩스파랜드 3주차 요약집

3주차 과제 및 결과물 작성

  • QUIZ!! <지니뮤직의 1~50위 곡을 스크래핑 해보세요.>
# 여기부터가 크롤링 기본세팅
import requests
from bs4 import BeautifulSoup

from pymongo import MongoClient
client = MongoClient('localhost', 27017)
db = client.dbsparta

# 타겟 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://www.genie.co.kr/chart/top200?ditc=D&ymd=20200403&hh=23&rtm=N&pg=1',headers=headers)


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


# select를 이용해서, tr들을 불러오기
trs = soup.select('#body-content > div.newest-list > div > table > tbody > tr')

# trs (tr들) 의 반복문을 돌리기
for tr in trs :
    title = tr.select_one('td.info > a.title.ellipsis').text .strip()
    singer = tr.select_one('td.info > a.artist.ellipsis').text
    rank = tr.select_one('td.number').text[0:2] .strip()

    print(rank, title, singer)
    

3주차 과제에서 사용한 문장

  • 크롤링 기본세팅
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')

#############################
# (입맛에 맞게 코딩)
#############################
* 스파르타코딩클럽 3주차 요약본 출처 *

앞으로 준비가 필요한 부분

1. 코딩 알고리즘 : 매일단위로 하면 좋으며, 어디서 해야하는지 확인할것
2. 4 ~ 5주차 강의 마무리 : 이건 아마 최대 2주가 소요될 예정
3. 강의가 다끝나고 나서 : 우선 1주간 복습을 하며 나만의 방식으로 local 사이트를 만들 예정, 이후 리엑트 or 백엔드 쪽 강의를 들을 예정
4. 전직교육원에서 추천하는 강의 : 이걸 들을까 말까 하는 고민중임
5. 소규모 프로젝트 : 올해 안에는 한번이라도 시도해보자!
6. 코딩 관련 스터디 그룹 찾기 : X로나 때문에 될지는 모르겠으나, 강원도 인근주변으로 해서 한번 더 찾아보자

뒤를 돌아보며 후회할 시간에 한걸음이라도 나아가자!!

좋은 웹페이지 즐겨찾기