본문 바로가기

생각정리/항해99

웹개발 종합반 3주차

Python 기본

Python란 인터프리터 방식의 프로그래밍 언어이다.

인터프리터 방식이란 코드를 한 줄씩 실행하는 방식으로 위에서부터 순차적으로 작동한다고 보면 된다.

빅데이터 및 AI관련 분야에서 주로 사용되고 있다.

 

Python기본 문법

다른 언어들과는 다르게 자료형 선언 없이 변수를 사용한다.

들어가는 값에 따라 사용이 달라저 변수명 선정에 좀 더 신경을 써야 할 듯하다.

함수 및 조건문, 반복문 사용에도 중괄호 대신 콜론을 사용하고 들여 쓰기로 구분을 하기 때문에 사용에 주의

# 변수 선언
name = '철수'
a = 5
b = True

# 리스트 및 딕셔너리
a = ['사과', '배', '감', '귤'] // 리스트 - 배열과 동일
b = {'name':'영수', 'age':30} // 딕셔너리 - 키-값 형태(JSON)
c = [ // 리스트 속 딕셔너리 가능
   {'name':'영수', 'age':30},
   {'name':'철수', 'age':35}
]

# 조건문 및 반복문
ages = [5, 10, 13, 23, 25, 9]
for a in ages: # 함수와 동일하게 중괄호 대신 콜론 사용
    if a > 20:
        print('성인입니다.')
    else:
        print('청소년입니다.')

# 함수 사용
def sum(a,b,c):  # 중괄호 대신 콜론을 사용, 구분은 탭을 통해 해서 정렬 중요
    return a+b+c

 

Python 패키지 사용

기본 가상환경이 있지만 프로젝트 별로 따로 라이브러리를 사용하기 위해 해당 폴더에서 새로 가상환경을 생성해 준다.

# 패키지를 모아두기 위해 가상환경 생성
# 터미널에서 명령어 사용
python(맥은 python3) -m venv venv
# venv 폴더 생성 후 활성화를 시켜준다.

# 이후 사용할 라이브러리 설치 (연속해서 적으면 순차적으로 다운)
# pip install 라이브러리명, 라이브러리명2 ...
pip install requests

 

Python에서 API호출

자바스크립트에서 fetch와 동일한 기능을 한다고 보면 된다.

import requests # 라이브러리 다운 (pip install requests)

r = requests.get('http://spartacodingclub.shop/sparta_api/seoulair')
rjson = r.json()

rows = rjson['RealtimeCityAir']['row']

 

크롤링 기본

웹상의 html 태그들을 이용하여 필요한 데이터들을 가져온다. (개발자모드를 이용하면 웹상의 html 확인가능)

import requests # 라이브러리 다운 (pip install requests)
from bs4 import BeautifulSoup # 라이브러리 다운 (pip install bs4)

URL = "https://movie.daum.net/ranking/reservation"
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(URL, headers=headers)
soup = BeautifulSoup(data.text, 'html.parser')

# 하나의 정보만 가져올때
title = soup.select_one('#mainContent > div > div.box_ranking > ol > li:nth-child(6) > div > div.thumb_cont > strong > a')
print(title.text) # 내용을 크롤링 할때
soup.select('태그명[속성="값"]')
print(title['href']) # 속성을 크롤링 할때

# 포함된 여러 정보를 가져올때
soup.select('태그명')
soup.select('.클래스명')
soup.select('#아이디명')

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

lis = soup.select('#mainContent > div > div.box_ranking > ol > li')
title = li.select_one('.link_txt').text # 해당 클래스의 문자
#title = li.select_one('.link_txt').text.strip() # 앞뒤의 공백 제거
#title = li.select_one('.link_txt').text.replace('해당문자를', '이걸로변경') # 특정 문자 변경

 

DB 연동

크게 SQL과 No-SQL로 구분되며 Python은 주로 MongoDB를 사용한다.

자세한 내용은 DB부분만 따로 내용을 정리해보기.

# MongoDB 연동하기
# dnspython 도메인을 받아 데이터를 송수신할 때 사용하는 라이브러리 (pip install dnspython)
from pymongo import MongoClient # 라이브러리 다운 (pip install pymongo)
# import certifi # 라이브러리 다운 (pip install certifi) - 리눅스 사용시 보안 관련 추가 설정
# ca = certifi.where() # 리눅스 시 추가

client = MongoClient('DB URL')
# client = MongoClient('DB URL', tlsCAFile=ca) # 리눅스 시 추가
db = client.DB명

# 데이터 넣기 { '컬럼':'값' }
doc = {
    'name':'영수',
    'age':24
}
db.테이블명.insert_one(doc)

# 데이터 가져오기 ( _id 값은 제외하고 출력)
all_users = list(db.테이블명.find({},{'_id':False})) # 전부다 가져오기
all_users = list(db.테이블명.find_one({},{'_id':False})) # 하나만 가져오기
for a in all_users:
   print(a)

# 데이터 수정하기 { '컬럼':'값' }
db.테이블명.update_one({'name':'영수'},{'$set':{'age':19}})

# 데이터 삭제하기 { '컬럼':'값' }
db.테이블명.delete_one({'name':'영수'})

 

단축키(윈도우 - 리눅스)

  • 주석 : Ctrl + / = Command + /
  • 줄정렬 : Shift + Alt + F = Shift + Option + F
  • 줄복사 : Shift + Alt + 아래방향키 = Shift + Option + 아래방향키
  • 줄이동 : Alt + 방향키 = Option + 방향키

 

참조 사이트

https://account.mongodb.com/account/login

 

Cloud: MongoDB Cloud

 

account.mongodb.com

 

'생각정리 > 항해99' 카테고리의 다른 글

[필수 트랙] SQL 1일차  (0) 2023.08.03
웹개발 종합반 5주차  (0) 2023.07.23
웹개발 종합반 4주차  (0) 2023.07.21
웹개발 종합반 2주차  (0) 2023.07.18
웹개발 종합반 1주차  (0) 2023.07.17