[3주차]_Python, 웹 스크래핑(크롤링), mongoDB

acacia·2022년 9월 11일
0
post-thumbnail

1. Python

Python

동적 타이핑 범용 프로그래밍 언어로, 플랫폼 "독립적"으로 다양한 플랫폼을 사용 가능하며, 라이브러리(모듈)가 풍부하다.

파이썬의 특징

  1. 프로젝트 생성시 venv폴더 자동 생성: 안보이는 것으로 간주
  2. 매우 직관적인 언어로 중괄호, 세미콜론 등이 사용되지 않는다.
  3. 변수 정의 시 자료형을 따로 정해주지 않아도 된다.
  4. 줄 맞춰 작성하는 것이 아주 중요하다.
ex)    a = 2
       b = 3
              
       print(a+b)   

파이썬 지식

  • 자료형
1) 숫자, 문자형
2) 리스트형: 배열(자바스크립트와 동일)
3) Dictionary형(자바스크립트와 동일)
	-> 리스트와 조합으로도 사용가능 
  • 함수
def로 시작
  • 조건문
 if :
 else:
 
 ________________________
 or if is not ____:
  • 반복문
리스트와 함께 쓰이도록 고안되어 있다.
=> for fruit in fruits:

Python 내장함수

  1. 리스트에 목록 추가
    - append()

2. 스크래핑 & 크롤링

스크래핑과 크롤링

웹 서버에 저장된 데이터를 가져오는 행위를 웹 크롤링 혹은 웹 스크래핑이라 한다.
"웹 스크래핑"은 웹사이트로부터 특정한 데이터만 가져오는 행위를 의미하며, "웹 크롤링"은 구글, 네이버, 다음과 같은 포털 사이트들이 인터넷에 있는 다수의 정보를 가져가는 행위를 말한다.

크롤링 준비

크롤링을 하기 위해서는 외부라이브러리(= 파이썬 패키지)를 사용해야한다!!!
L 프로젝트 별로 라이브러리를 모아둘 수 있게 설계되었음
('가상환경 = venv')

라이브러리

1) requests
일종의 ajax역할을 하는 것

import requests 
r = requests.get('url')
rjson = r.json()

2) bs4(beautifulsoup)
크롤링 시 찾고자 하는 내용(ex.제목 등)을 쉽게 찾도록 돕는 라이브러리

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'

3. mongoDB

DB란?

데이터를 잘 뽑아쓰기 위해 정리해놓는 것으로 "프로그램" 중 하나 일 뿐이다
요즘은 cloud형태로 제공받아 사용하는 경우가 많다

DB의 종류

1) SQL
정형화 되어 데이터를 쌓는 것 -mysql

2) NOSQL
비정형화 되어 유연하게 쌓는 것 - mongodb

mongoDB

-> 트래픽 대응에 편리하다는 장점이 있음
-> mongoDB Atlas : 클라우드 환경에서 제공하는 db프로그램

mongoDB 사용방법

package 설치 : dnspython, pymongo , certifi

from pymongo import MongoClient
import certifi
 
ca = certifi.where()
client = MongoClient('mongodb+srv://username:<password>@cluster0.hvkrheo.mongodb.net/?retryWrites=true&w=majority', tlsCAFile=ca)
db = client.dbsparta
# 저장 - 예시
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개의 댓글