728x90
(1) 강의내용
- OpenAPI 붙여보기
- Python
- 파이썬 기초공부
- 파이썬 패키지 설치
- 파이썬 사용하기
- 크롤링 기초
- 크롤링 연습하기
- MongoDB
- DB 설치 확인
- DB 종류
- pymongo 사용법
- 크롤링 값 저장하기
- 3주차 숙제
(2) Python
- 파이썬 패키지 설치(bs4, requests, pymongo)
- window의 경우 Pycharm 내부에서 File -> Settings -> Project: Project_Name -> Python Interpreter -> +버튼 ->원하는 Package입력 ->Install Package -> OK
- requests
#requests 라이브러리 설치 필요
import requests
r = requests.get('open_api 주소')
rjson = r.json()
- bs4 (BeautifulSoup)
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'}
# url = 크롤링하고 싶은 사이트의 url
data = requests.get('url',headers=headers)
# soup이라는 변수에 "파싱 용이해진 html"이 담긴 상태가 됨
soup = BeautifulSoup(data.text, 'html.parser')
# 선택자를 사용하는 방법 (copy selector)
soup.select('태그명')
soup.select('.클래스명')
soup.select('#아이디명')
# 개발자도구(F12)를 열어 원하는 부분을 copy -> copy_selector를 통해 확인 가능
soup.select('상위태그명 > 하위태그명 > 하위태그명')
soup.select('상위태그명.클래스명 > 하위태그명.클래스명')
# 태그와 속성값으로 찾는 방법
soup.select('태그명[속성="값"]')
# 한 개만 가져오고 싶은 경우
soup.select_one('위와 동일')
(3) MongoDB
- DB 설치 및 확인 - 크롬창에 localhost:27017을 입력 후 아래화면이 나오면 정상
- DB 종류
- SQL - 데이터가 정형화 되어있어 분석에 용이하나, 중간에 열을 추가하는 행동이 어려울 수 있다.
- No-SQL - 데이터가 딕셔너리 형태로 저장되어 일관성이 부족하지만, 중간에 열을 추가하는것에 문제가 없다.
- pymongo 사용법
from pymongo import MongoClient
client = MongoClient('localhost', 27017)
#dbname = 원하는 db이름
db = client.dbname
#collection_name = 원하는 collection 이름
#collection_name의 모든 값 검색
list(db.collection_name.find({},'_id':False))
#collection_name의 name열에서 Kim 검색
db.collection_name.find_one({'name':'Kim'},'_id':False)
#collection_name의 name열에있는 Kim을 나이 20세로 수정
db.collection_name.update_one({'name':'Kim'},{'$set':{'age':20}})
#collection_name의 name열에있는 Kim을 삭제
db.collection_name.delete_one({'name':'Kim'})
#collection_name의 데이터를 모두 삭제
db.collection_name.remove()
(4) 3주차 숙제
import requests
from bs4 import BeautifulSoup
from pymongo import MongoClient
client = MongoClient('localhost', 27017)
db = client.dbsparta
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://www.genie.co.kr/chart/top200?ditc=D&ymd=20200403&hh=23&rtm=N&pg=1',headers=headers)
soup = BeautifulSoup(data.text, 'html.parser')
trs = soup.select('#body-content > div.newest-list > div > table > tbody > tr')
for tr in trs:
rank = tr.select_one('td.number')
artist = tr.select_one('td.info > a.artist.ellipsis')
title = tr.select_one('td.info > a.title.ellipsis')
print(rank.text.split(' ')[0].strip(), title.text.strip(), artist.text.strip() )
(5) 느낀점
크롤링과 db에 대해 필요한 부분만 잘 정리되어있는 수업진행으로 기초 부분을 빠르고 쉽게 이해할 수 있었습니다.
모든 수업마다 이전에 했던 내용을 복습하며, 금주에 배울 내용에 대해서도 여러 번 반복하여 새로운 Quiz, 숙제를 통하여 이해뿐만 아니라 조금이나마 익숙해 질 수 있었습니다.
반응형
'Study > Sparta Coding Club' 카테고리의 다른 글
[스파르타코딩클럽] 웹 개발 종합반 - 5주차 (후기) (0) | 2021.03.11 |
---|---|
[스파르타코딩클럽] 웹 개발 종합반 - 4주차 (후기) (0) | 2021.03.01 |
[스파르타코딩클럽] 웹 개발 종합반 - 2주차 (후기) (0) | 2021.02.22 |
[스파르타코딩클럽] 웹 개발 종합반 - 1주차 (후기) (2) | 2021.02.19 |
스파르타코딩클럽 - 크리스마스 특집 (0) | 2021.01.06 |