일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- TDD
- Ai
- 웹개발종합반
- 사전준비
- D반8조
- Expo
- typeScript
- 필수강의
- 맥린이
- 알pdf #파일탐색기미리보기안될때
- 실전프로젝트
- Programmers
- 스파르타코딩클럽
- ReactNative
- NotionAI
- 항해99
- 달리기반
- 프론트엔드
- 팀워크최고
- TS
- 알고리즘기초주차
- 챗GPT
- rn
- 코린이
- 프로그래머스
- 7기
- REACT
- ChatGPT
- 리액트
- 멍친구
- Today
- Total
FrontEnd :-)
[항해99] 사전준비-3 Python, DB 본문
이틀을 건너뛰고 복습하니, 그새 잊어버린 것이 많다. 에공. 파이썬은 1년 전 쯤 독학해보겠다고 강의 몇 개를 들은 적이 있는데, 기억에 남는 게 없다. 그래도 노트에 적은 것이 있어서 참고하기 좋을 것 같다. 3주차 강의는 꽤 재밌었다
HTML > CSS > Bootstrap > Javascript >JQuery > API/Ajax > Python > Crawling > mongoDB > Flask(post,get) > 서버/AWS
배운 점: Python, 크롤링, mongoDB(아래 테이블)
별점 별 모양 표시방법
for문으로 불러오고,
let star = rows[i]['star']
별 이모티콘으로 반복될 수 있게 .repeat() 설정하고,
let star_image = '⭐'.repeat(star);
temp_html에서 별 이모티콘 부분은 ${star_image}로.
크롤링: 크롤링(crawling) 혹은 스크레이핑(scraping)은 웹 페이지를 그대로 가져와서 거기서 데이터를 추출해 내는 행위
for movie in movies:
a = movie.select_one('td.title > div > a')
if a is not None:
print(a.text)
None이 none이면 실행 안 됨.
어려운 점: python, 추가 강의를 들어야겠다
노트:
<mongoDB 연결 오류>
웹개발종합반FAQ에서 해결방법을 찾음. Certifi 패키지 설치와 그 패키지를 연결하는 코드 추가가 필요!
from pymongo import MongoClient
import certifi
ca = certifi.where()
client = MongoClient('mongodb+srv://~~’, tlsCAFile=ca)
db = client.dbsparta
이후 내 pc에서 mongoDB 사용하려면, 이 사항은 필수.
<크롤링 숙제에서>
’19금’ 표시된 곡 > 노래 제목 앞에 19금 문자가 긴 공백과 함께 표시됨 > .lstrip('19금').strip()으로 제거.
- strip([chars]) : 인자로 전달된 문자를 String의 왼쪽과 오른쪽에서 제거합니다.
- lstrip([chars]) : 인자로 전달된 문자를 String의 왼쪽에서 제거합니다.
- rstrip([chars]) : 인자로 전달된 문자를 String의 오른쪽에서 제거합니다.
[Table] 강의: Python, 크롤링, mongoDB 기초 (3-1~3-11)
강의 | 내용(내 기준, 알아둘 점) | 코드 예시 |
3-1 | 3주차 설치 | |
3-2 | 별점 별 모양 표시방법 for문으로 불러오고, let star = rows[i]['star'] 별 이모티콘으로 반복될 수 있게 .repeat() 설정하고, let star_image = '⭐'.repeat(star); temp_html에서 별 이모티콘 부분은 ${star_image}로. |
|
3-3Python | 실행 단축기(Mac OS) shift(⇧)+control(^)+R |
|
3-4* | 변수&기본연산, 자료형, 함수, 조건문, 반복문 | 과일 개수 세기 함수 예제↓ 딕셔너리 예제↓ |
3-5 | 크롤링하려면 남들이 만들어놓은 라이브러리를 사용해야 함. (패키지 설치 = 외부 라이브러리 설치) 파이썬 패키지? 모듈(일종의 기능들 묶음)을 모아 놓은 단위. 라이브러리? 패키지의 묶음 가상환경(virtual environment)은 같은 시스템에서 실행되는 다른 파이썬 응용 프로그램들의 동작에 영향을 주지 않기 위해, 파이썬 배포 패키지들을 설치하거나 업그레이드하는 것을 가능하게 하는 격리된 실행 환경 파이썬 공식 용어집 https://docs.python.org/ko/3/glossary.html requests 패키지 설치 설정(preferences) > 프로젝트 > python 인터프리티 > + > requests 찾아서 패키지 설치 |
|
3-6 | Requests 라이브러리 사용 | |
3-7 웹스크래핑(크롤링) | 제목을 쉽게 찾게 해주는 라이브러리 : (beautifulsoup4) > bs4 패키지 설치 웹페이지 검사(개발자도구) > Copy > copy selector |
for movie in movies: a = movie.select_one('td.title > div > a') if a is not None: print(a.text) None이 none이면 실행 안 됨. |
3-8 Quiz | 웹스크래핑 더 해보기 (순위, 제목, 별점) | |
3-9 DB | DB: 잘 뽑아쓰기 위해 쓴다. SQL vs NoSQL(Not only SQL) SQL : 정형화. 데이터의 일관성, 분석에 용이. 유연성 부족 ex)MS-SQL, My-SQL 등 NoSQL: 바로바로 쌓임. 적재에 유리하나 일관성 부족. 초기 서비스 또는 스타트업에서 선택. ex)MongoDB |
|
3-10 | mongoDB 회원 가입 https://account.mongodb.com/account/register |
|
3-11 | 1) mongoDB - Atlas 연결하기 1-ㄱ) pymongo, dnspython 패키지 설치 1-ㄴ) pymongo 기본 코드 입력 from pymongo import MongoClient client = MongoClient('여기에 URL 입력') db = client.dbsparta |
|
3-12 | # 저장 - 예시 doc = {'name':'bobby','age':21} db.users.insert_one(doc) # 한 개 찾기 - 예시 user = db.users.find_one({'name':'bobby'}) # 여러개 찾기 - 예시 ( _id 값은 제외하고 출력) all_users = list(db.users.find({},{'_id':False})) # 바꾸기 - 예시 db.users.update_one({'name':'bobby'},{'$set':{'age':19}}) # 지우기 - 예시 db.users.delete_one({'name':'bobby'}) |
|
3-13 | ||
3-14 Quiz | ||
3-15 homework** | 지니뮤직 크롤링 |
*3-4
과일 개수 세기 함수 예제
fruits = ['사과','배','배','감','수박','귤','딸기','사과','배','수박']
count = 0
for fruit in fruits:
if fruit == '사과':
count += 1
print(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'))
**3-15 homework
music = soup.select('#body-content > div.newest-list > div > table > tbody > tr')
for a in music:
title = a.select_one('td.info > a.title.ellipsis').text.strip().lstrip('19금').strip()
rank = a.select_one('td.number').text[0:2].strip()
artist = a.select_one('td.info > a.artist.ellipsis').text.strip()
print(rank, title, artist)
'항해99_7기 > 사전 준비' 카테고리의 다른 글
[항해99] 사전준비-5 Flask, AWS, 도메인 (0) | 2022.05.02 |
---|---|
[항해99] 사전준비-4 Flask 기초 (0) | 2022.05.02 |
[항해99] 사전준비-2 JQuery, Ajax (0) | 2022.04.28 |
[항해99] 사전준비-1 HTML, CSS, Javascript (0) | 2022.04.27 |
[항해99] 사전준비-0 (0) | 2022.04.27 |