3주차에 공부한 것들
- python 기초
- 웹 스크래핑(크롤링)
- python을 활용한 mongoDB 제어
웹 스크래핑을 하기 위해 외부 라이브러리를 사용해야 하는데, 이를 위해서는 패키지를 설치해야한다.
💡파이썬 패키지 설치(macOS)
Preferences-> Project:프로젝트 이름 -> Python Interpreter ->+
버튼 -> bs4, requests 설치
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('url',headers=headers)
soup = BeautifulSoup(data.text, 'html.parser')
파싱이 용이해진 HTML
이 담긴 상태가 된다. 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('url',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)
# 선택자를 사용하는 방법
soup.select('태그명')
soup.select('.클래스명')
soup.select('#아이디명')
soup.select('상위태그명 > 하위태그명 > 하위태그명')
soup.select('상위태그명.클래스명 > 하위태그명.클래스명')
# 태그와 속성값으로 찾는 방법
soup.select('태그명[속성='값']')
# 한 개만 가져오고 싶은 경우
soup.select_one('위와 동일')
데이터 베이스에는 크게 SQL, NoSQL 두 가지 종류가 있다.
행/열의 생김새가 정해진 엑셀에 데이터를 저장하는 것과 유사하다.
데이터 50만 개가 적재된 상태에서, 갑자기 중간에 열을 추가하기는 어려울 것이다.
그러나 RDBMS는 정형화되어 있어 데이터의 일관성이나 분석에 용이하다.
예) MS-SQL, MySQL 등
딕셔너리(키-값) 형태로 데이터를 저장해두는 데이터 베이스이다.
데이터 하나하나 같은 값들을 가질 필요가 없다.
자유로운 형태의 데이터 적재에 유리하지만, 데이터의 일관성이 부족하다.
예) MongoDB
mongoDB라는 프로그램을 조작하기 위해서는 라이브러리 pymongo
와 dnspython
설치가 필요하다.
# DB 연결
from pymongo import MongoClient
client = MongoClient('URL')
db = client.dbsparta(db.db명)
# 데이터 입력
doc = {
'name':'bob',
'age':27
}
db.users.insert_one(doc)
# 특정 데이터 넣기
doc = {
'name':'bobby','age':21
}
db.users.insert_one(doc)
# 여러 데이터 넣기
db.users.insertMany( [
{'name':'bobby','age':21},
{'name':'kay','age':27},
{'name':'john','age':30}
])
# 모든 데이터 뽑아보기
all_users = list(db.users.find({},{'_id':False}))
print(all_users[0])
print(all_users[0]['name']) # 0번째 결과값의 'name'을 보기
for user in all_users: # 반복문 돌며 모든 결과값 출력
print(user)
# 특정 결과 값 뽑아보기
user = db.users.find_one({'name':'bobby'})
print(user)
# 하나의 값 수정
db.users.update_one({'name':'bobby'},{'$set':{'age':19}})
# 다수의 값 수정
db.users.updateMany({'name':'홍길동'},{$set:{'age':23}}) # 홍길동 이라는 이름을 가진 모든 이들의 나이를 수정
# 특정 값 삭제
db.users.delete_one({'name':'bobby'})
# 다수의 값 삭제
db.users.deleteMany({'name':'홍길동'}) # 홍길동 이라는 이름을 가진 모든 데이터 삭제
드디어 python를 학습할 시간이 왔다!
전부터 한번쯤 배워보고 싶다고 생각하고 있었던 터라 굉장히 기대했던 강의였다.
웹개발 종합반 강의에서는 아주 기초적인 부분만 다루기 때문에 파이썬 또한 파이썬 기초문법 뽀개기
강의를 통해 보충해줬다.
과연 들었던 대로 문법이 정말 간단해서 배우기 쉬웠다.
전에 자바를 배워서 기본적인 문법(반복문, if/else 등)을 알고 있어서 더 쉬웠는지도 모르겠다.
그런데 자바와는 달리 Tab
을 통해 코드를 나누기 때문에 코드가 길어지면 조금 보기 어려웠다...
(자바에 너무 익숙해져있는 건가?)
그치만 자바에 비해 문법도 간단하고 다루기 쉽다고 느꼈다.
다음에 기회가 되면 본격적으로 파이썬 공부해보고 싶다!!