📌 PLAN (~2/5)
- 웹개발 종합반 강의 2회독 완료 → Velog 기술 블로그 정리까지 (3주차/총 5주차) (~1월/25일)
- GIT & GITHUB 이해 및 사용법 숙달(2회 완료/총 5회)
- 코딩테스트 맛보기 (Aft)
- 토이프로젝트 맛보기 (Aft)
📌 WHAT TODAY?
웹 스크래핑(크롤링) & 데이터베이스 공부 회고시작(2주차)
Front-DAY 3 : Request 모듈을 이용한 JSON가져오기, 웹스크래핑 과정 숙달하기
강좌 : https://spartacodingclub.kr/online/web 웹개발 종합반_스파르타코딩클럽
Request 패키지 json이랑 함께 이용해보기
import requests # requests 라이브러리 설치 필요 r = requests.get('http://spartacodingclub.shop/sparta_api/seoulair') rjson = r.json()
패키지?
- 모듈이 함수의 집합이라면 패키지(package)는 모듈을 모아놓은 - 엄밀하게 말하면 ,라이브러리(library)는 패키지(package)의 집합으로 패키지보다 포괄적인 개념
웹 스크래핑(크롤링)?
- 웹페이지에서 필요한 데이터들을 뽑아오는 작업을 일컫는다.
Beutifulsoup 라이브러리
- HTML,JSON들의 파일의 구문을 분석하는 모듈. 웹페이지를 표현하는 HTML을 분석하기 위해 사용
import requests from bs4 import BeautifulSoup #타겟 URL을 읽어서 HTML를 받아오고, 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) # HTML을 BeautifulSoup이라는 라이브러리를 활용해 검색하기 용이한 상태로 만듦 # soup이라는 변수에 "파싱 용이해진 html"이 담긴 상태가 됨 # 이제 코딩을 통해 필요한 부분을 추출하면 된다. soup = BeautifulSoup(data.text, 'html.parser')
import requests
from bs4 import BeautifulSoup
# URL을 읽어서 HTML를 받아오고,
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)
# HTML을 BeautifulSoup이라는 라이브러리를 활용해 검색하기 용이한 상태로 만듦
soup = BeautifulSoup(data.text, 'html.parser')
# select를 이용해서, tr들을 불러오기
movies = soup.select('#old_content > table > tbody > tr')
# movies (tr들) 의 반복문을 돌리기
for movie in movies:
# movie 안에 a 가 있으면,
a_tag = movie.select_one('td.title > div > a')
if a_tag is not None:
# a의 text를 찍어본다.
print (a_tag.text)
# 선택자를 사용하는 방법 (copy selector)
soup.select('태그명')
soup.select('.클래스명')
soup.select('#아이디명')
soup.select('상위태그명 > 하위태그명 > 하위태그명')
soup.select('상위태그명.클래스명 > 하위태그명.클래스명')
# 태그와 속성값으로 찾는 방법
soup.select('태그명[속성="값"]')
# 한 개만 가져오고 싶은 경우
soup.select_one('위와 동일')
from pymongo import MongoClient
import certifi
ca = certifi.where()
'''
SSL은 개인정보 보호를 제공하기 위해, 웹에서 전송되는 데이터를 암호화 한다.
따라서, 데이터를 가로채려해도 거의 복호화가 불가능하다.
SSL은 클라이언트와 서버간에 핸드셰이크를 통해 인증이 이루어진다.
또한 데이터 무결성을 위해 데이터에 디지털 서명을 하여 데이터가 의도적으로 도착하기 전에 조작된 여부를 확인한다.
-> SSL은 SSL인증서(=TLS인증서)가 있는 웹사이트만 실행할 수 있다. 인증서는 사람의 신분증과 유사하다고 볼 수 있다.
-> 특정 환경(특정 시스템 혹은 버전)에서는 지원을 하지 않는 경우가 있어서 certifi 라는 패키지를 설치하여 해결!
'''
client = MongoClient('여기에 URL 입력',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'})