3주 차 수업 내용
python
크롤링(crawling)
MongoDB
웹사이트의 기본적인 모양과 기능까지 넣었으니 이번엔 서버와 연동할 차례! 사실 수업 신청하기 전에 데이터베이스에 대해서 배우고 싶었기 때문에 굉장히 기대하면서 수업을 들었다.
#국비지원교육
#내일배움카드
1. 파이썬
백엔드 프로그램을 시작하기 위해서는 먼저 파이썬을 다운로드하고 실행할 필요가 있다. 대학교 1학년 때 파이썬으로 거북이 불러서 그림 그렸던 게 엊그제 같은데 이걸로 백엔드 개발 찍먹을 하고 있다니...^^(감개무량해요)
https://www.python.org/downloads/windows/
내 노트북에 당연히 파이썬 깔려있을 줄 알고 검색했는데 없어서 새로 깔았음. 아마 파이썬 수업 성적을 받고 파형이 생겨서 더 이상 보기 싫어 지운 것으로 추정됨
아 그리고 설치 창에서 아래 두 개 다 체크되어 있는지 꼭 확인해야 함.
나는 섣불리 강의 멈추고 먼저 설치했다가 지우고 다시 깔았음...ㅋㅋ
프로그램 다운로드하고 비주얼 스튜디오에서 확장 프로그램까지 설치하면 준비 끝
파이썬 기본 문법은 거의 다 아는 내용이라 따로 글로 정리하지 않았음
안 해봤던 자바스크립트 하려니 지난주엔 어려웠는데 이번 주는 파이썬이라 마음이 편하다ㅎㅎ 역시 저번주 수업이 조금 어려웠던 게 맞는 듯
조금 어려운 부분은 패키지 활용을 위해 터미널을 확장하는 부분이었다

노란색으로 경고 문구가 뜨긴 했는데 수업 진행에 있어서 아무런 지장도 없다고 한다.
강사님 화면은 저 막대기 부분이랑 용량, 속도, 시간 표시하는 부분이 알록달록 색이 있는데 내 화면은 없다 버전이 다른 듯?
+) 추가
코딩한 파일 실행하려고 할 때 requests 패키지가 다운로드되지 않았다고 떴다
다시 터미널 열어서 pip install requests 입력하니 화면도 강사님이랑 똑같았고 제대로 코드가 실행됨. 아마 이 부분에서 실수로 다르게 입력했거나 버전이 달랐거나 한 듯
PyPI · The Python Package Index
The Python Package Index (PyPI) is a repository of software for the Python programming language.
pypi.org
jquery처럼 파이썬 패키지를 가져올 수 있는 사이트.
이름이 파이파이라니 제법 깜찍하다(코드는 안 깜찍함)
비슷한 이름의 패키지들이 엄청 많은데 정확하게 이름이 같은지 잘 체크해야 함.
2. 웹 스크래핑(크롤링)
일단 웹 스크래핑과 크롤링은 엄격히 말하자면 다른 용어이지만, 웹사이트에서 정보를 받아온다는 의미에선 같다고 볼 수 있다.(한마디로 이 수업에선 별 차이가 없다)
이번 수업에서 배울 내용은 내가 원하는 페이지를 요청하는 방법과 받은 코드에서 내가 원하는 부분을 구별해 낼 수 있는 방법이다.
크롤링을 한다는 것은 결국 어떤 웹사이트에 접속해 그 정보를 수집해 온다는 것인데, 코딩을 사용해 컴퓨터가 이 웹사이트에 접속하게 하는 것이니 사람이 직접 웹사이트를 클릭해 접속하는 것보다 훨씬 접속량이 늘어나게 된다고 한다. 그래서 많은 정보들을 가져오는 것은 웹사이트 서비스를 제공하는 회사 입장에서는 부담이 될 수도 있다고 한다. 따라서 여러 번 데이터를 가져오는 것보다 한 번 가져오는 식으로 조절을 할 필요가 있다고 한다. 결론은 크롤링도 남의 집에서 정보를 받아오는 것이니 피해 안 가게 알잘딱 하라는 것.
크롤링을 위해서는 requests 패키지 이외에 한 개의 패키지가 더 필요하다.
새 터미널을 열고 pip install beautifulsoap4라고 작성한다.
코드에 적용시킬 땐 코드 맨 위에 import (패키지 이름)으로 작성하면 됨
requests 패키지를 사용해서 원하는 사이트의 링크에 요청을 할 수가 있다.
또 BeautifulSoup 패키지를 사용하면 받아온 사이트의 코드를 분석할 수 있다. (태그를 사용해서 원하는 부분의 정보를 가져올 수 있음)
개발자 도구를 열고 elements탭에서 원하는 정보 태그의 왼쪽 점 세 개 버튼을 오른쪽 마우스 클릭->copy->copy selector를 클릭하면 그 정보의 경로? 가 복사된다.(개발자도구에서 볼 때 왼쪽 화살표로 숨김처리되는 부분까지 포함해서 나옴)
이걸 이용해 웹페이지에서 내가 원하는 값만 가져올 수 있음
한 개의 값만 가져온다면 새로운 변수를 생성하고 복붙 한 경로를 select라는 함수를 사용해서 값을 가져올 수 있다. select_one을 사용하면 한 가지 값만 가져옴
만약 내가 가져올 값이 리스트라서, 리스트에 포함된 여러 개의 값들을 가져오려면 반복문과 조건문을 응용해 작성하면 된다.
3. 몽고 DB
인터넷에서 오고 가는 정보들은 저장이 필요한 경우 데이터베이스에 저장되는데, 대부분의 경우 table형식으로 저장된다. 표 형식을 이용하는 이유는 당연하지만 가장 효율적인 방식이기 때문이다. SQL이라는 언어를 배워야 한다는 단점이 있지만 SQL만 배우면 효율적으로 데이터를 저장하거나 가져오고 수정할 수도 있다.
하지만 이번 수업에서 SQL까지 다루기에는 그 내용이 방대하고 어려워서 몽고 DB를 사용함. 몽고 DB는 JSON 방식을 사용한다.(2주차 수업에 API 자료 형식과 같다)
즉 콜론을 사용해 쌍으로 묶어놓은 형태로 데이터를 저장해서 데이터베이스에 대해 깊게 공부할 필요 없이 사용할 수 있다는 장점이 있다.
MongoDB: The Developer Data Platform
Get your ideas to market faster with a developer data platform built on the leading modern database. MongoDB makes working with data easy.
www.mongodb.com
몽고DB 홈페이지에 접속해 community server 탭을 선택한다. 몽고 DB의 여러 버전들 중에서도 community 버전은 무료버전이라서 공부하면서 사용하기 좋음
사용 중인 os를 선택하고 버전은 4.4 버전으로 선택해서 다운로드하였다.
몽고 DB에서는 collection이라는 개념이 사용됨
비슷한 카테고리의 정보들끼리 묶인 일종의 집합이라고 생각하면 될 듯
몽고 DB를 사용하기 위해서는 pymongo라는 패키지를 설치할 필요가 있다.
새 터미널 선택해서 pip install pymongo 입력하면 준비 끝
https://pymongo.readthedocs.io/en/stable/tutorial.html
Tutorial — PyMongo 4.3.3 documentation
Tutorial This tutorial is intended as an introduction to working with MongoDB and PyMongo. Prerequisites Before we start, make sure that you have the PyMongo distribution installed. In the Python shell, the following should run without raising an exception
pymongo.readthedocs.io
가이드 문서 또는 레퍼런스 문서라고 불리는 기능소개 페이지이다
새 코드를 생성하고 맨 위에 import와 from을 사용해 사용할 패키지를 알려주고
위 페이지에서 client = MongoClient('mongodb://localhost:27017/') 라는 코드를 복사한 후 코드에 붙여 넣는다.
연습을 위해 몽고 DB의 local탭에 새로운 컬렉션을 하나 만든다
db = client.local //로컬 탭을 사용
(변수이름) = db.fastcampus //fastcampus라는 컬렉션을 사용
컬렉션에 데이터 넣기 : (변수이름). insert_one({"A" : "B", "C" : "D"})
원하는 조건에 맞는 데이터 찾기 : (변수이름). find_one({조건 내용})
조건 내용으로는 "A" : "B"와 같은 식으로 입력해 A가 B인 데이터만 고를 수 있다.
4. 웹스크래핑 결과 저장출력하기
스크래핑한 코드를 몽고 DB에 저장하기 위해 새 코드를 생성했다.
이때 몽고 DB에 새로운 컬렉션을 만들건대, 새 컬렉션을 생성할 때는 이미 있는 컬렉션에 접근하는 것처럼 사용하면 자동으로 컬렉션이 만들어진다고 한다.
db["컬렉션 이름"].insert_one({
'키 이름' : '변수 이름'.text
})
이런 형식으로 크롤링한 데이터를 컬렉션 안에 넣을 수 있다.
물론 데이터가 여러 개일 경우 반복문을 사용함
개인적인 수업 후기
3주 차 수업은 웹서버에서 데이터를 가져오는 방법과 데이터베이스에 저장하는 방법을 배웠다. 사실 한 번에 이해가 잘 안 돼서 여러 번 들었지만 애초에 강의 시간 자체가 길지 않아서 복습도 여러 번 할 수 있는 건 좋은듯. 이번 주 수업은 과제가 없었지만 여러번 반복해서 들어서 실제 수강 시간을 따져보면 비슷한 것 같다. 크롤링이라는 것 자체를 처음 접해봤는데 생각보다 어렵지 않고 재미있었다. 혼자 해보라고 하면 할 수 있을지 모르겠지만..^^
'코딩' 카테고리의 다른 글
[패스트캠퍼스] 웹개발 강의 5주차 후기 (1) | 2023.02.01 |
---|---|
[패스트캠퍼스] 웹개발 강의 4주차 두번째 후기 (0) | 2023.01.31 |
[패스트캠퍼스]웹개발 강의 4주차 후기 (1) | 2023.01.29 |
[패스트캠퍼스]웹개발 강의 2주차 후기 (0) | 2023.01.19 |
[패스트캠퍼스]웹개발 강의 1주차 후기 (0) | 2023.01.19 |
댓글