파이썬의 기초 분법에는
크롤링 기본 세팅
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')
크롤링을 하면서 내가 코딩하는 대로 원하는 데이터를 받아서 볼 수 있다는 게 재밌었다.
하지만, 반복 학습이 많이 필요할 것 같다.
Datavase에는 크게 두가지 종류가 있다.
RDBMS(SQL)
행과 열의 생김새가 정해진 엑셀에 데이터를 저장하는 것과 유사하다. 예를 들어 데이터 50만 개가 적재된 상태에서, 갑자기 중간에 열을 하나 더하기는 어려울 것이다. 그러나, 정형화되어 있는 만큼, 데이터의 일관성 및 분석에 용이할 수 있다.
ex) MS-SQL / My-SQL
No-SQL
딕셔너리 형태로 데이터를 저장해두는 DB다. 고로 데이터 하나 하나 마다 같은 값들을 가질 필요가 없게 된다. 자유로운 형태의 데이터 적재에 유리한 대신, 일관성이 부족할 수 있다.
ex) MongoDB
pymongo 기본 코드
from pymongo import MongoClient
client = MongoClient('localhost', 27017)
db = client.dbsparta
기본 코드를 잘 저장해 놓고 있으면 코딩할때 유용하게 응용할 수 있을 것 같다.
아래와 같이 이번 3주차 때 진행한 숙제이다.
지니 음악 사이트에서 순위 / 제목 / 가수를 크롤링해서 코딩을 해봤다.
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://www.genie.co.kr/chart/top200?ditc=D&ymd=20200403&hh=23&rtm=N&pg=1',headers=headers)
soup = BeautifulSoup(data.text, 'html.parser')
trs = soup.select('#body-content > div.newest-list > div > table > tbody > tr')
for tr in trs:
title = tr.select_one('td.info > a.title.ellipsis').text.strip()
rank = tr.select_one('td.number').text[0:2].strip()
artist = tr.select_one('td.info > a.artist.ellipsis').text
print(rank, title, artist)
2주차보다는 3주차가 그래도 '덜'어려웠다. 현재 3주간 진행을 했을 때, 점점 코드에 의미를 알고, 스스로가 코딩을 할 때면 그래도 성장을 하는 것 같아 보인다. 그래도 반복 학습을 하여, 코드를 치는 속도를 높이고, 자기주도적으로 할 수 있게 노력을 해야겠다.