기록하는 개발자
3주차_Python, 크롤링, mongoDB 본문
1. python : 컴퓨터가 이해하는 명령어로 번역해주는 패키지, venv 폴더 --> 그대로 내버려 둬야 함 (라이브러리를 담아두는 폴더)
(1) 자바와 다른점
1. 변수 성질 특정하지 않는것 빼곤 자바와 거의 동일
2. 들여쓰기 --> 내용물, 중괄호가 없음
3. 리스트
예제) for문 어차피 list 값을 꺼내니까 문법을 간소화 함
fruits = ['사과','배','배','감','수박','귤','딸기','사과','배','수박']
count = 0
for fruit in fruits:
if fruit == '수박':
count += 1;
4. dictionary 형 for 문
for person in people:
if person['age'] > 20:
print(person)
+ python tip
에러는 밑에 줄부터 읽으면 편하다
-> 에러 설명을 구글링하면 쉽게 처리할 수 있다
(2) 사용 package 설치
ctrl + alt + s ->python interpreter -> + -> package 이름 검색
( requests, bs4, pymongo )
+ bs4 -> pymongo CRUD 기본 문법
from pymongo import MongoClient
client = MongoClient('localhost', 27017)
db = client.dbsparta
# insert, find, update, delete --> CRUD 기본
# 1. insert
doc = {'name':'Jane','age':21}
db.users.insert_one(doc)
#2. find
same_ages = list(db.users.find({'age':21},{'_id':False}))
same_ages = list(db.users.find({},{'_id':False})) # Select *
for person in same_ages:
print(person)
user = db.users.find_one({'name':'bobby'}) # Select * user where name = 'bobby'
print(user)
#3. update
db.users.update_one({'name':'bobby'},{'$set':{'age':19}})
db.users.update_many({'name':'Hannah'},{'$set':{'age':20}}) # update all
#4. delete
db.users.delete_one({'name':'bobby'})
(3) 크롤링, 스크랩핑
크롤링의 기본 이유 : 이미 받아온 값을 솎아내는 것
(4) DB
RDBMS(SQL) : 정형화된 데이터는 일관성이 있고, 분석에 용이, 자유롭게 적재하기 어려움, 엑셀형
ex) MS-SQL, MySQL
No-SQL : 자유로운 형태의 데이터 적재에 유리, 일관성 부족, 딕셔너리 형
ex) MongoDB
(5) homework
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('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')
# Rank #body-content > div.newest-list > div > table > tbody > tr:nth-child(1) > td.number
# title #body-content > div.newest-list > div > table > tbody > tr:nth-child(1) > td.info > a.title.ellipsis
# singer #body-content > div.newest-list > div > table > tbody > tr:nth-child(1) > td.info > a.artist.ellipsis
songs = soup.select('#body-content > div.newest-list > div > table > tbody > tr')
for song in songs:
rank = song.select_one('td.number').text[0:2].strip()
title = song.select_one('td.info > a.title.ellipsis').text.strip()
singer = song.select_one('td.info > a.artist.ellipsis').text
print(rank, title, singer)'학습 노트 > 항해 99 강의 정리' 카테고리의 다른 글
| [node.js 심화] shop _ jwt, mySQL (0) | 2022.01.29 |
|---|---|
| 5주차_flask, aws, gabia 프로젝트 완성 및 배포 (0) | 2021.12.28 |
| 4주차_Flask framework API, POST & GET Ajax (0) | 2021.12.26 |
| 2주차_ jQuery, Ajax (0) | 2021.12.24 |
| 1주차_ html, css, javascript 기본 문법 및 실습 (0) | 2021.12.21 |