Bootcamp : 3주차 개발일지

cad·2022년 4월 9일
0

Bootcamp

목록 보기
3/5

3주자 목표
1. 원하는 페이지를 크롤링 한다.
2. pymongo를 통해 mongoDB를 제어할 수 있다.


크롤링, Crawling

  • 크롤링(crawling)이란 데이터를 수집하고 분류하는 것을 의미한다.
  • 주로 인터넷상의 웹페이지를 수집해서 분류하고 저장하는 것을 뜻하며 데이터가 어디에 저장되어 있는지 위치에 대한 분류 작업이 크롤링의 주요 목적이다.

특정 사이트에서 원하는 목록 긁어오기

예를 들어 지니 뮤직 사이트에 랭크 순위를 긁어와보자

  1. 원하는 컴포넌트에 ctrl+shift+c 를 눌러 선택자를 클릭한다.

  1. 개발자 도구 창에서 해당 부분으로 이동했다면 우클릭 - Copy - Copy selector를 눌러 선택자를 복사한다.
#body-content > div.newest-list > div > table > tbody > tr:nth-child(1) > td.info > a.title.ellipsis

위와 같이 아로하 노래에 대한 선택자가 복사된다.

이러한 방법으로 랭킹, 타이틀, 가수 까지 긁어와서 목록을 완성시켜보자

예제 코드

trs = soup.select("#body-content > div.newest-list > div > table > tbody > tr")
for tr in trs:
    title_tag = tr.select_one('td.info > a.title.ellipsis')

    if title_tag is not None:
        rank = tr.select_one('td.number').text[:2].strip()
        title = title_tag.text.strip()
        singer = tr.select_one('td.info > a.artist.ellipsis').text

        print(rank, title, singer)

결과

pymongo

mongoDB

  • NoSQL DBMS의 한 종류이다.
  • MongoDB는 NoSQL로 분류되는 크로스 플랫폼 도큐먼트 지향 데이터베이스 시스템이다.
  • MySQL 처럼 전통적인 테이블-관계 기반의 RDBMS가 아니며 SQL을 사용하지 않는다.
  • 이름의 mongo는 humongous를 줄인 표현이다. 즉 '겁나 큰 DB' 라는 뜻.

pymongo란

  • pymongo란 파이썬 몽고 디비 드라이버이다.

init

1 from pymongo import MongoClient
2
3 client = MongoClient('localhost', 27017)
4 db = client.dbsparta
  1. mongoDB driver를 호출해서 사용할 수 있도록 한다.
  2. mongoDB 서버에 포트를 입력해 connecting한다.
  3. client에서 DB를 찾아와 db 객체를 만든다. 만약 없다면 새로 생성한다.
    • 즉 dbsparta 라는 DB가 없으면 새로 만든다.

이제 간단한 CRUD 메서드를 통해 조작해보자

insert / find / update / delete

insert

        doc = {
            'rank': rank,
            'title': title,
            'star': star
        }
        db.movies.insert_one(doc)
  • doc 딕셔너리 변수를 만들어서 movies라는 테이블에 insert한다.

find

data = db.movies.find_one({'title': '나 홀로 집에'})

print(data)
print(data['star'])

  • movies 테이블에서 title 이 '나 홀로 집에'인 데이터를 긁어온다.
  • 딕셔너리 형태로 와서 원하는 데이터는 key값으로 사용해볼 수 있다.

update

db.movies.update_one({"title": "매트릭스"}, {"$set": {"star": 0}})
  • update_one({A},{B})
    A가 대상인 데이터에서 B의 작업을 실행한다.
    즉, title이 매트랙스인 데이터에서 star를 0으로 업데이트한다.

delete

db.users.delete_one({'name':'bobby'})

users 테이블에서 name이 bobby인 컬럼을 제거한다.


출처
https://namu.wiki/w/MongoDB

profile
Dare mighty things!

0개의 댓글