mongoDB실행
cmd창 --> mongod
http://localhost:27017/
파이썬
== 번역팩을 설치하는 것.
파이썬으로 명령을 내리면 컴퓨터가 알아들을 수 있는 언어로 번역해주는 틀.
파이썬 문법 헷갈렷던 것들
딕셔너리 추가
리스트 예제
딕셔너리 예제
파이썬 패키지 설치하기
파일-> 세팅 -> 파이썬 인터프리터 -> + -> 검색 -> 설치
사용 : 구글링 (ex python requests 패키지)
import requests # requests 라이브러리 설치 필요
r = requests.get('http://openapi.seoul.go.kr:8088/6d4d776b466c656533356a4b4b5872/json/RealtimeCityAir/1/99')
rjson = r.json()
print(rjson['RealtimeCityAir']['row'][0]['NO2'])
--> request패키지는 ajax를 두줄만에 실행
크롤링
beautifulsoup4
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')
title = soup.select_one('#old_content > table > tbody > tr:nth-child(2) > td.title > div > a') // 한개만 가져오기
--> select_one(검사->copy->selector)
print(title.text)// 태그의 텍스트만 가져옴
print(title['href'])//태그의 속성을 가져옴
trs = soup.select('#old_content > table > tbody > tr')// 여러개 가져오기
--> select는 결과가 리스트로 나옴
for tr in trs:
print(tr)
//여러 리스트 중에 제목만 가져오기
for tr in trs:
a_tag = tr.select_one('td.title > div > a')
if a_tag is not None:
print(a_tag.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')
trs = soup.select('#old_content > table > tbody > tr')
print(trs)
for tr in trs:
a_image = tr.select_one('td:nth-child(1) > img')
a_tag = tr.select_one('td.title > div > a')
a_star = tr.select_one('td.point')
if a_tag is not None:
print(a_image['alt'],a_tag.text,a_star.text)
크롤링한 내용 DB에 저장하기
--> database , 기본적으로 데이터를 쌓아두는 것
--> 컴퓨터에서 돌아가고 있지만 눈에 보이지 않는 것.
--> mongoDB의 데이터를 시각화 해서 우리 눈에 보이게 해주는 것
사용이유? 데이터를 잘 갖다 쓰려고.(데이터 잘 찾기위함)
종류 ? SQL, NoSQL
SQL - 엑셀에 데이터 저장하는 것과 유사
'-' 중간에 열을 하나 더하기 어려움
'+' 정형화되어있어, 데이터 일관성/분석에 용이
ex) MS-SQL, My-SQL
NoSQL - 한줄 한줄이 딕셔너리 형태로 들어감
'+' 융통성 있게 관리 가능
ex) MongoDB
pymongo로 DB조작하기
--> python으로 mongoDB조작하려면 pymongo라는 라이브러리 사용해야 함.
--> mongodb는 딕셔너리가 쌓이는 것
from pymongo import MongoClient
client = MongoClient('localhost', 27017)
db = client.dbsparta
doc = {'name':'bobby','age':21}
db.users.insert_one(doc)
same_ages = list(db.users.find({'age':21},{'_id':False}))
user = db.users.find_one({'name':'bobby'})
db.users.update_one({'name':'bobby'},{'$set':{'age':19}})
db.users.delete_one({'name':'bobby'})