내일배움캠프 5기 합류 전 기본적인 강의를 들어야 한다고 한다.
웹개발을 위한 기본적인 강의 (HTML, CSS, JavaScript)
진도
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.naver?sel=pnt&date=20210829',headers=headers) soup = BeautifulSoup(data.text, 'html.parser') #old_content > table > tbody > tr:nth-child(2) > td.title > div > a trs = soup.select('#old_content > table > tbody > tr') #old_content > table > tbody > tr:nth-child(3) > td:nth-child(1) > img for tr in trs: img = tr.select_one('td:nth-child(1) > img') a = tr.select_one('td.title > div > a') b = tr.select_one('td.point') if a is not None: print(img['alt'], a.text, b.text)
- 네이버 영화의 여러 데이터들을 requests, BeautifulSoup 모듈을 이용해 긁어오기
- 긁어온 정보를 DB에 저장하기
- mongoDB 시작하기
- mongoDB 사이트 가입 및 DB세팅
- pymongo, dnspython 모듈 설치
- pymongo 모듈을 불러 와서 mongoDB에 접속
from pymongo import MongoClient client = MongoClient('mongodb+srv://sparta:test@cluster0.caexhck.mongodb.net/?retryWrites=true&w=majority') db = client.dbsparta doc = { 'name': '영수', 'age': 24 }
- mongoDB에서 데이터 전체 불러오기
all_users = list(db.users.find({},{'_id':False}))
- mongoDB에서 데이터 하나 불러오기
users = db.users.find_one({})
- mongoDB의 데이터 수정하기
db.users.update_one({'name':'영수'}, {'$set':{'age':19}})
- mongoDB의 데이터 삭제하기
# 저장 - 예시
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'})
감상
mongoDB를 사용해보고 웹사이트 크롤링한 결과를 mongoDB에 저장하고 불러왔다. 아직까진 전체적으로 맛보는 수준인 것 같다.
코드잇 코딩 공부 과정
16. 파이썬 EAFP 코딩 스타일과 다형성
- LBYL(Look Before You Leap) : 어떤 작업 전에 확인이나 검사를 먼저 거치는 코딩 스타일, 돌다리도 두드려보고 건너라
- EAFP(Easier to Ask for Forgiveness than Permission) : 일단 실행하고 나중에 문제가 생기면 해결하는 코딩 스타일, 허락보다 용서를 구하는 것이 쉽다
try: total_area += shape.area() except (AttributeError, TypeError): print("그림판에 area 메소드가 없거나 잘못 정의되어 있는 인스턴스 {}가 있습니다.".format(shape))
- 위의 예시처럼 try~except구문으로 에러가 발생할 수도 있는 구문을 처리해줄 수 있다(EAFP스타일) << 파이썬스러운 스타일
감상
객체 지향 프로그래밍의 4가지 중요한 점을 배울 수 있었다. 아직까지는 모호하지만 완강 후 한번 더 전체적인 복습을 통해 전체적인 흐름을 기억해야겠다
파이썬 문제 풀어보기
개요: M번만큼 i~j까지 바구니를 뒤집어 출력하는 문제
접근방법: 배열을 뒤집는 방법을 생각해야 한다
import sys
N, M = map(int, sys.stdin.readline().split())
array = [n for n in range(1, N + 1)]
for _ in range(M):
i, j = map(int, sys.stdin.readline().split())
cache = array[i-1:j]
array[i-1:j] = list(reversed(array[i-1:j]))
print(*array, sep=' ')
reversed()
함수를 사용했다. reversed()
함수는 iterator객체를 리턴하므로 list()
로 감싸서 리스트를 리턴해주어야 한다.