On a couch
[3주차] python 본문
일지
22.02.03
노마드코딩 한다고 잠시 미뤄뒀던 걸 다시 이어서 하려니까 손에 안 잡혀 죽는 줄 알았다.
그 사이 클론코딩 하나 완성하고 기본서도 사서 읽었다.
기본서도 이것도 2회는 돌려야 하는데 마음만 급하고 손에는 잘 안 잡혀서 더 조급하다.
파이썬 드디어 해 봤다. 듣던대로 더 단순하기도 한데, 기본적으로는 js랑 크게 다르지 않아서 안심도 된다.
스파르타 들을 때마다 흥선대원군 된 느낌이다.
22.02.04
흥선대원군 뺨때기 때리고 정신차려라. 갈 길이 멀다.
3주차 강의 간단한 내용인데도 집중 안 돼서 진짜 여러번 봤는데 덕분에 이해는 잘 하고 넘어가는 것 같다.어차피 안 쓰면 또 까먹겠지만 한번 이해 했던 건 다르겠지.
파이썬 문법 배운 것
{ }와 ; 쓰지 않고 들여쓰기와 : 로 포함관계를 구분한다.
for문 쓸 때 i++도 필요없다.
for 어레이 속 요소1개 in 어레이(전체) :
~어레이 속 요소1개를 이렇게 저렇게~
하면 전체 어레이/리스트에서 각각의 요소를 1개씩 뽑아서 알아서 돌려서 출력해 줌.
for 뒤에 오는 이름은 아무렇게나 붙여도 상관없음.
*어레이[어레이속요소1개] 이런 식으로 쓰면 오류 남.
어레이속요소1개 <---- 이게 이미 어레이[ i ]이기 때문.
파이썬으로 크롤링
사용하는 라이브러리
1. 코드단에서 정보를 요청하는 것 -> requests 라이브러리가 해 줌
2. 요청해서 가지고 온 html들 중 원하는 정보를 잘 솎아내는 것 -> beatyfulsoup4 라이브러리가 해 줌
beatyfulsoup 사용법
# HTML을 BeautifulSoup이라는 라이브러리를 활용해 검색하기 용이한 상태로 만듦
soup = BeautifulSoup(data.text, 'html.parser')
# select를 이용해서, tr들을 불러오기
movies = soup.select('#old_content > table > tbody > tr')
*copy.select() 메소드로 가져오고자 하는 elem의 선택자 입력
1) select_one( '선택자' )
2) select( '선택자' )
*객체 key 로 선택
['key 이름']
크롤링은 정답이 없다! 사이트마다 상태를 보고 어떻게 가져올 지 전략 세우는 것.
mongoDB와 ROBO T3 사용
mongodb : NoSQL으로 분류. 데이터를 테이블로 저장하지 않고 array로 쌓아 둠.
robot3 : mongodb 시각화 프로그램.
from pymongo import MongoClient
client = MongoClient('localhost', 27017)
db = client.dbsparta
# insert / find / update / delete
# 저장 - 예시
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'})
지니뮤직 크롤링하기
requests, bs4, pymongo를 먼저 import하기.
크롤링해 올 정보들 중 html 경로가 겹치는 부분은 trs로 일단 묶어 둠.
이후 tr 뒤에서 더 필터링해서 나오는 정보는 다른 이름으로 정의.
필요한 정보 앞뒤에 공백이 있다거나 하면 정리해 줘야 함.
rank에서는 숫자마다 뒤에 '/n'이 붙어있길래 뒤에서부터 2번째까지를 [0:-1]로 지움.
*문자열.strip() : 문자열 앞뒤의 공백을 전부 제거
*문자열.split('기준') : 원하는 표식을 기준으로 자른 뒤 list로 만듦. 그 중 원하는 문자열이 몇 번째 항목인지 [n]으로 지정해줘야 함.
*문자열[start : end] : 엑셀의 left, right 함수 같은 것. 왼쪽의 특정 지점(첫번째 문자는 0)부터 오른쪽의 특정 지점(음수 가능)까지 선택해 줌.
'프론트엔드 공부 > 스파르타 웹개발 종합반' 카테고리의 다른 글
[5주차] 서버 작업 (0) | 2022.02.13 |
---|---|
[메이킹챌린지] 10기 4조 개발일지 (0) | 2022.02.10 |
[4주차] python (0) | 2022.02.08 |
[2주차] js, jquery, ajax (0) | 2022.01.23 |
[1주차] 페이지 제작 기초 (0) | 2022.01.18 |