a = 3 # 3을 a에 넣는다
b = a # a를 b에 넣는다
a = a + 1 # a+1을 다시 a에 넣는다
num1 = a * b # a*b의 값을 num1이라는 변수에 넣는다
num2 = 99 # 99의 값을 num2이라는 변수에 넣는다
name = 'bob' # 문자형
num = 12 # 숫자형
is_number = True # True 또는 False -> "Boolean"형
a=['사과','배','감']
print(a) # ['사과','배','감']
print(a[0]) # 사과
a= {}
a= {'name':'영수','age':24}
print(a) # {'name':'영수','age':24}
print(a['name']) # 영수
함수의 이름은 마음대로 정할수 있다.
def 함수이름(매개변수): 함수의 기능
# e.g.
def f(x):
return 2 * x + 5
y = f(2)
print(y) # 9
# e.g.
age = 25
if age > 20:
print('성인입니다.')
else:
print('청소년입니다.)
# 실행시 '성인입니다.' 출력
파이썬에서는 리스트의 요소를 하나씩 꺼내는 형태.
# e.g.
fruits = ['사과','배','감','귤']
for fruit in fruits:
print(fruit)
# 사과, 배, 감, 귤 하나씩 꺼내어 찍힙니다.
Javascript의 Fetch라이브러리와 비슷하게 URL의 JSON형태의 데이터를 가져오는데 사용함.
import requests # requests 라이브러리 설치 필요
r = requests.get('가져오고 싶은 URL')
rjson = r.json()
import requests
from bs4 import BeautifulSoup
URL = "https://movie.daum.net/ranking/reservation"
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(URL, headers=headers)
soup = BeautifulSoup(data.text, 'html.parser')
## 다음 영화랭킹 크롤링 해보기
lis = soup.select('#mainContent > div > div.box_ranking > ol > li')
for li in lis:
rank = li.select_one('.rank_num').text
title = li.select_one('.link_txt').text.strip() # .strip 앞뒤 공백을 없애줌. .replace(a, b) a를 b로 치환
rate = li.select_one('.txt_grade').text
print(rank, title, rate)
# 선택자를 사용하는 방법 (copy selector)
soup.select('태그명')
soup.select('.클래스명')
soup.select('#아이디명')
soup.select('상위태그명 > 하위태그명 > 하위태그명')
soup.select('상위태그명.클래스명 > 하위태그명.클래스명')
# 태그와 속성값으로 찾는 방법
soup.select('태그명[속성="값"]')
# 한 개만 가져오고 싶은 경우
soup.select_one('위와 동일')
왜 DB를 사용하는가?
DB는 저장을 잘하는 것 보다 저장된 데이터를 잘 가져오는게 데이터베이스의 역할이다.
데이터베이스는 크게 두가지로 구분된다.(SQL, NoSQL)
행/열의 생김새가 정해진 엑셀에 데이터를 저장하는 것과 유사함. 예를 들어 데이터가 50만 개가 적재된 상태에서, 갑자기 중간에 열을 하나 더하기는 어렵다. 그러나, 정형화되어 있는 만큼, 데이터의 일관성이나 / 분석에 용이할 수 있다.
딕셔너리 형태로 데이터를 저장해두는 DB이다. 고로 데이터 하나 하나 마다 같은 값들을 가질 필요가 없게 된다. 자유로운 형태의 데이터 적재에 유리한 대신, 일관성이 부족할 수 있다.
python 라이브러리인 pymongo, dnspython을 설치
from pymongo import MongoClient
client = MongoClient('여기에 URL 입력')
db = client.dbsparta
# 저장 - 예시
doc = {'name':'bobby','age':21}
db.users.insert_one(doc)
# 한 개 찾기 - 예시
user = db.users.find_one({'name':'bobby'})
# 여러개 찾기 - 예시 ( _id 값은 제외하고 출력)
all_users = list(db.users.find({},{'_id':False}))
# 바꾸기 - 예시
db.users.update_one({'name':'bobby'},{'$set':{'age':19}})
# 지우기 - 예시
db.users.delete_one({'name':'bobby'})
오늘은 python을 통해 웹스크래핑과 db와 연결하는 방법에 대해서 학습을 하였다. 앞에서의 내용을 학습하면서는 이런걸로 뭘 할수 있지 라는 생각이 많았는데 오늘 배운 내용은 지금 바로 써먹을수 있는 내용이라서 학습에 재미를 느낄 수 있었다. 매일 ctrl + c, ctrl + v 만 하는 것 같지만... 잘하고 있는지 고민이 되긴한다.