스파르타코딩클럽 웹개발종합반 #NOTE 3

3주차 내용을 마치며..

3주차 내용이 끝났다. 강사분이 강의 시작하기 전에 말했듯 현재에서 배운 내용 중 가장 흥미로웠고 직관적인 코드가 깔끔해보였다. 수업을 듣기 전에 혼자 코딩을 배워보겠다고 손댔던 파이썬과는 다른 세계였다. (내가 한 건 print 'hello'밖에 없던 거 같지만)

크롤링과 DB를 배우다보니 나만의 사전 등 필요한 자료를 정리해둘 수 있을 것만 같다는 생각도 문득했다. 개인적으로는 게임을 취미로 가지고 있기에, 혹은 영화/드라마 등 영상 문화에 대한 내용에도 관심이 많아서 좀 내가 보기 편하게 정리할 수 있으면 좋겠다고 문득 느꼈는데...언젠가는 가능하겠지?

01. Crawling (or Scraping)

크롤링 혹은 스크랩핑. 웹페이지의 정보 중 필요한 데이터를 추출하여 정리하는 형태라고 볼 수 있다. 차곡차곡 정리되는 형태는 아니지만 자신만의 형태로 DB를 만들거나 필요한 정보만을 확인하기에는 적절한 방법 같다.

그전에 mongoDB 설정은 잊지말고 할 것.

from pymongo import MongoClient
client = MongoClient('localhost', 27017)
db = client.dbsparta

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')

trs = soup.select('#old_content > table > tbody > tr')
  • 지니뮤직 크롤링 퀴즈 진행 내용 중, 데이터 뽑을 때 쓴 코드
for song in songs:
        rank = song.select_one('td.number').text[0:2].strip()
        title = song.select_one('td.info > a.title.ellipsis').text.strip()
        singer = song.select_one('td.info > a.artist.ellipsis').text
        print(rank,title,singer)

"사실 다른부분보다 rank부분의 '.text[0:2]'는 이해했다기보다 통째로 집어넣었다."
가끔 코드는 완벽하게 이해하는 부분보다 위에 내용처럼 전체를 가져다쓰면서 이렇게 사용하면 코딩이 어떤 모양으로 나오는구나를 이해하는 과정 같다.

02. MongoDB

DB를 사용하기 전에 3줄부터 먼저!

from pymongo import MongoClient
client = MongoClient('localhost', 27017)
db = client.dbsparta

1. 저장 - 예시
doc = {'name':'bobby','age':21}
db.users.insert_one(doc)
2. 한 개 찾기 - 예시
user = db.users.find_one({'name':'bobby'})
3. 여러개 찾기 - 예시 ( _id 값은 제외하고 출력)
same_ages = list(db.users.find({'age':21},{'_id':False}))
4. 바꾸기 - 예시
db.users.update_one({'name':'bobby'},{'$set':{'age':19}})
5. 지우기 - 예시
db.users.delete_one({'name':'bobby'})

DB에 입력하고, 찾고, 바꿀 때는 위에 코드를 활용하여 하면 된다.
특히 one 대신 many를 쓸 수 있지만 DB에서 여러 가지의 데이터를 변경하는 것은 위험부담이 있으므로 되도록 하나씩 바꾸는 것이 확실하고 좋다.

다음에 해볼 것(?)

  • 알라딘 책 순위 등에 대한 DB도 만들어 볼 것
  • 좋아하는 게임(?) 관련 내용에 대한 DB도 만들어 보...볼 것

좋은 웹페이지 즐겨찾기