[스파르타 코딩] 웹 개발 종합반 3주차 - 크롤링, mongoDB

김동현·2022년 8월 30일
0

💡크롤링

  • 크롤링을 위한 파이썬 패키지 (외부 라이브러리 설치)
    • requests : 일종의 Ajax와 같은 역할을 하는 패키지로 API 데이터를 추출할 때 사용하며, 파이썬에서 HTTP를 호출하는 프로그램을 작성할 때 주로 사용된다.
    • bs4(BeautifulSoup) : requests를 통해 가져온 HTML정보로 부터 원하는 데이터를 가져오기 쉽게, 비슷한 분류의 데이터별로 나누어주는(parsing) 파이썬 라이브러리

크롤링을 위한 기본 골격

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

ex) 영화 크롤링

  • 위 사진에서 '밥정' 영화 제목을 가져오기 위해
    • '밥정'에 마우스 우클릭 후 '검사'를 클릭한다.
    • 하이라이트 되어있는 코드에 마우스 우클릭 -> 'copy' -> 'copy selector'를 클릭한다.
      #old_content > table > tbody > tr:nth-child(2) > td.title > div > a
    • 'copy selector'를 변수에 붙여넣기를 한 후 soup.select_one()을 통해 해당 HTML 코드를 가져올 수 있다.
      title = soup.select_one('#old_content > table > tbody > tr:nth-child(2) > td.title > div > a')
  • 여러 개의 영화 제목을 가져오기 위해
    • 밥정과 다른 영화 제목 하나를 위 방법대로 'copy selector'를 한다
      #old_content > table > tbody > tr:nth-child(2) > td.title > div > a # 밥정
      #old_content > table > tbody > tr:nth-child(3) > td.title > div > a # 그린북
    • 위 두 코드를 보면 #old_content > table > tbody > tr: 까지가 공통인 것을 알 수 있다. 공통인 코드를 soup.select()를 통해 해당 코드의 HTML 코드를 가져온다.
      movies = soup.select('#old_content > table > tbody > tr:')
    • 'copy selector'에 나머지 뒷 부분을 soup.select_one()과 for문 통해 돌려준다.
      for movie in movies:
      	a = movie.select_one('td.title > div > a')

💡mongoDB

  • mongoDB란?
    • 전통적인 관계형 데이터베이스(RDBMS)보다 덜 제한적인 일관성 모델을 이용하는 NoSQL의 DBMS이다.
  • mongoDB Atlas란
    • mongoDB를 mongoDB Atlas에 설치를 하면 사용자의 컴퓨팅 자원을 소모하지 않고 사용할 수 있는 원격 DB가 생성된다. (클라우드 데이터베이스)

파이썬에서 mongoDB 접속하는 법

  • pymongodnspython 패키지 설치
  • mongoDB Atlas에서 클러스터에 들어가 언어와 버전을 설정한 후 아래 나오는 코드를 복사
  • 아래 기본코드를 복사한 후 넣고 위에서 복사한 코드 중 password와 클러스터 이름을 변경한 후 url 부분에 넣는다.
    from pymongo import MongoClient
	client = MongoClient('mongodb+srv://test:패스워드@cluster0.hbsrzff.mongodb.net/클러스터 이름?retryWrites=true&w=majority')
	db = client.dbsparta 

pymongo로 DB 조작 예시

# 저장 - 예시
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'})
profile
오늘은 오늘

0개의 댓글