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을 입력 후 아래화면이 나오면 정상

MongoDB정상작동

 

  • 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, 숙제를 통하여 이해뿐만 아니라 조금이나마 익숙해 질 수 있었습니다.


 

반응형

+ Recent posts