코딩 3 주차

을정·2021년 7월 5일
0

코딩

목록 보기
3/4

Python,크롤링,mongoDB를 배웠다.

Python

파이썬은 일종에 번역기라고 생각하면 된다고 한다.
파이썬은 매우 직관적인 언어고 할 수 있는것이 많다.
파이썬에서도 변수,자료형,함수,조건문,반복문이 있는데
자바스크립트랑 비슷하면서도 약간씩 달라서 좀 해맸다
특히 반복문이 좀 헷갈렸다.

fruits = ['사과','배','배','감','수박','귤','딸기','사과','배','수박']

count = 0
for fruit in fruits:
	if fruit == '사과':
		count += 1

print(count)

(반복문 다른 예제)

def count_fruits(target):
	count = 0
	for fruit in fruits:
		if fruit == target:
			count += 1
	return count

subak_count = count_fruits('수박')
print(subak_count) #수박의 갯수

gam_count = count_fruits('감')
print(gam_count) #감의 갯수

(딕셔너리 예제)

people = [{'name': 'bob', 'age': 20}, 
          {'name': 'carry', 'age': 38},
          {'name': 'john', 'age': 7},
          {'name': 'smith', 'age': 17},
          {'name': 'ben', 'age': 27}]

# 모든 사람의 이름과 나이를 출력해봅시다.
for person in people:
    print(person['name'], person['age'])


# 이번엔, 반복문과 조건문을 응용한 함수를 만들어봅시다.
# 이름을 받으면, age를 리턴해주는 함수
def get_age(myname):
    for person in people:
        if person['name'] == myname:
            return person['age']
    return '해당하는 이름이 없습니다'


print(get_age('bob'))
print(get_age('kay'))

일단 이것만 기억하자

파이썬 패키지 설치

패키지는 즉 라이브러리다 남이 만든 쓰기 편리한 코드들을
내가 가져와서 사용할 수 있는것이다 이런 기능이 있어 간편하고 좋은것 같다.
패키지를 설치하고 적용을 할려면 기본 코드를 써서 사용해야 된다.

크롤링 해보기

크롤링은 내가 정보를 가져와서 하는것인데
이때 개발자 도구를 사용하여 가져 올 수 있다
(copy - copy selector)
로 가져와 파이썬에 붙여놓고 코드를 가져온다.
이때 쓰는 패키지가 있는데
beautifulsoup라는 패키지이다
패키지 마다 사용 방법이 다르기 때문에 구글링을 해서 찾거나 해야한다.
밑에는 beautifulsoup 내 select에 미리 정의된 방법이다.

# 선택자를 사용하는 방법 (copy selector)
soup.select('태그명')
soup.select('.클래스명')
soup.select('#아이디명')

soup.select('상위태그명 > 하위태그명 > 하위태그명')
soup.select('상위태그명.클래스명 > 하위태그명.클래스명')

# 태그와 속성값으로 찾는 방법
soup.select('태그명[속성="값"]')

# 한 개만 가져오고 싶은 경우
soup.select_one('위와 동일')

mongoDB

DB에는 크게 2 가지 종류가 있는데
첫 번째는 RDBMS(SQL)라는 것이다.
그냥 내가 이해한 부분은
SQL은 표로 생겨 있고 그 표에 수 많은 데이터다 정렬 되어 있는 것이다.
장점은 데이터의 일관성이나 분석을 용이할 수 있는데
단점은 중간에 다른 데이터를 추가하기가 어렵다는 것이다.

두 번째는 NO-SQL라는 것이다.
자유롭게 데이터가 적재되어
장점이 새로 추가하기에도 편리하고 하나 하나 값을 가질 필요가 없지만
단점은 일관성이 부족하여 분석이 어려울 수가 있다.

DB를 조작하기 위해 파이썬에서
PYmongo라는 패키지를 설치해서 사용한다.

# 저장 - 예시
doc = {'name':'bobby','age':21}
db.users.insert_one(doc)

# 한 개 찾기 - 예시
user = db.users.find_one({'name':'bobby'})

# 여러개 찾기 - 예시 ( _id 값은 제외하고 출력)
same_ages = list(db.users.find({'age':21},{'_id':False}))

# 바꾸기 - 예시
db.users.update_one({'name':'bobby'},{'$set':{'age':19}})

# 지우기 - 예시
db.users.delete_one({'name':'bobby'})

크게 이 5가지만 기억하고 있자

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:
    name = tr.select_one('td.info > a.title.ellipsis').text.strip()
    rank = tr.select_one('td.number').text[0:2].strip()
    singer = tr.select_one('td.info > a.artist.ellipsis').text
    print(rank,name,singer)

내가 한 코드이다 처음에
trs = soup.select('#body-content > div.newest-list >
여기 코드에서 '#' 를 넣지 안아서 많이 해매고 있었다,,
이래서 하나 하나 잘 봐야 한다
그리고 strip(),[0:2] 이 코드들은 구글링을 해서 찾아서 사용한것인데
일단 찾아서 써보기는 했는데 솔직히 언제 또 쓰고 이해가 잘 안된것 같다.
종종 써서 내걸 만들어야 겠다,

이제 4주차로 가야한다.
일도 하면서 솔직히 많이 지쳐갔다
하지만 아직 기초인데 이런 나약한 모습 보이는 내가 너무 한심해서
더욱 노력 하자는 마음이 생겼다.
더 노력 하고 더 신경 써서 내걸 만들고 사용하자,

열정! 열정! 열정!

0개의 댓글