웹개발종합반

(항해 사전스터디) 웹개발종합반 3주차 정리

JAVABOZA 2023. 4. 10. 12:34

1주차 - html css javascript
2주차 - jquery , ajax ,api
3주차 - python , 크롤링 , mongoDB
4주차 - 미니프로젝트1, 미니프로젝트2
5주차 - 미니프로젝트3. AWS

-----------------------------------------------------------------------------------------------------------------------------------------------------------------

3주차 - python , 크롤링 , mongoDB

 

이번 주차에서는 파이썬 기초문법과 크롤링, mongoDB를 사용해서 서버쪽 작업을 진행했다.

파이썬은 처음싸용 해본 언어라 구글링을 통해서 찾아보았다.

 

파이썬이란?

  • 파이썬은 인터프리터 방식의 프로그래밍 언어, 다양하고 강력한 라이브러리와 풍부한 생태계를 통해서 데이터를 수집하고 분석 가능한 언어
  • 파이썬에 존재하는 기능들의 묶음은 모듈 -> 모듈의 묶음은 패키지 -> 패키지의 묶음은 라이브러리
  • 파이썬은 다른 언어보다 문법이 간단 그래서 나같은 초보 개발자들에게 추천
  • 현재 다양한 분야에서 인기있음!
  • 이외에도 장점이 많지만 단점으론 속도가 느리다 또 자바와 달리 모바일앱 개발 환경에선 사용하기가 힘들다.

💬 : https://book.coalastudy.com/data_crawling/week2/stage2  

 

Stage2. 파이썬 기초문법 이해하기 #1 - 쉽게 따라하는 데이터수집기 만들기

위와 같이 코드를 실행하면, 각각 a에는 "Hello World"가 저장되고, b에는 3, c에는 -11이 되어 아래에서 출력하는 경우 a, b, c를 출력하면 문자 a, b, c가 아닌 저장된 값 "Hello World", 3, -11이 출력되는 것

book.coalastudy.com

💬 :해당 블로그 참고하여 기초적인 개념 공부

 

 

파이썬 기초문법

📁변수 & 기본연산

a = 3      # 3을 a에 넣는다
b = a      # a를 b에 넣는다
a = a + 1  # a+1을 다시 a에 넣는다

num1 = a*b # a*b의 값을 num1이라는 변수에 넣는다
num2 = 99 # 99의 값을 num2이라는 변수에 넣는다


📁자료형

//숫자형,문자형

name = 'javadeveloper' # 변수에는 문자열이 들어갈 수도 있고,
num = 31 # 숫자가 들어갈 수도 있고,

is_number = True # True 또는 False -> "Boolean"형이 들어갈 수도 있습니다.
// 리스트형 -> 자바스크립트의 배열형과 동일

a=['사과','배','감']
print(a[0]) #사과
// Dictionary형 -> 자바스크립트의 Dictionary형과 동일

a= {}
a= {'name':'javadeveloper','age':31}


# a의 값은? {'name':'javadeveloper','age':31}
# a['name']의 값은? 'javadeveloper'

📁함수

# 수학문제에서
f(x) = 2*x+3   
y = f(2)
y의 값은? 7

# 참고: 자바스크립트에서는
function f(x) {
	return 2*x+3
}

# 파이썬에서
def f(x):
	return 2*x+3    //def

y = f(2)
y의 값은? 7

def hey():
     print('헤이!')

--> def는 함수를 선언하겠다 라는 뜻
자바스크립트는 hey(){} 이렇게 중괄호를 했는데
파이썬은 : 를 사용

print를 적을때는 hey 바로 밑에다가 줄맞춰서 작성해야함  -->들여쓰기 중요!

function hey(){    //자바스크립트 예시
}

📁조건문

age = 31

if age >= 30:
	print("30대 입니다")
else:
	print("30대가 아닙니다")

📁반복문

: 파이썬에서 반복문은 리스트의 요소들을 꺼내쓰는 형태를 가지고 있음

 

ex)

colors = ['red','yellow','blue','green']

for color in colors:
	print(color)

 = red, yellow, blue, green 을 하나씩 print됨

 

ages =[5,10,13,23,25,9]

for a in ages:
	if a>20:
		print("성인입니다")
	else:
		print("청소년입니다")

 

 

-----------------------------------------------------------------------------------------------------------------------------------------------------------------

 

 

다음은 파이썬에서 라이브러리를 사용하는 법을 진행했다.

 

파이썬파일을 만들때는 생성되는 venv(=가상환경) 👈  파일은 필요한 라이브러리를 모아두는 곳 

(쉽게 말하자면 프로젝트별 공구함!)

 

venv 생성하는 법

  • 작업하고자 하는 파일을 만들고 메뉴에서 터미널 -> 'python -m venv venv'를 입력한뒤 엔터
  • 결과 :  해당 파일에 venv 폴더 생성

 

파이썬 패키지 설치

( 패키지 설치 = 외부 라이브러리 설치)

 

  • 터미널 open -> 터미널에 아래의 이미지와 같이 (venv)가 입력되어 있으면 가상환경 활성화

 

pip 사용!

(앱을 사용할때는 앱스토어 설치하듯이, 새로운 프로젝트의 라이브러리를 가상환경(공구함)에 설치하려면 pip 사용)

 

터미널에 'python install requests ' 입력 후 엔터

 

코드에서 사용할때는 impoert requests 입력 해야함

👉 rows = rjon['RealtimeCityAir']['row']                  // rows라는 변수에 json형태의 ['RealtimeCityAir']['row']  를 담음

 

-----------------------------------------------------------------------------------------------------------------------------------------------------------------

 

 

<크롤링>

크롤링 연습을 하기위해 패키지를 추가

- pip install bs4

 

 

from pymongo import MongoClient
client = MongoClient('mongodb+srv://sparta:test@cluster0.eam3qp6.mongodb.net/?retryWrites=true&w=majority')
db = client.dbsparta

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(URL, headers=headers)
soup = BeautifulSoup(data.text, 'html.parser')

#mainContent > div > div.box_ranking > ol > li:nth-child(1) > div > div.thumb_item > div.poster_movie > img
#mainContent > div > div.box_ranking > ol > li:nth-child(1) > div > div.thumb_item > div.poster_movie > span.rank_num
#mainContent > div > div.box_ranking > ol > li:nth-child(1) > div > div.thumb_cont > span.txt_append > span:nth-child(1) > span
trs = soup.select('#mainContent > div > div.box_ranking > ol > li')
for tr in trs:  
    a = tr.select_one(' div > div.thumb_cont > strong > a')
    title = a.text
    rank = tr.select_one('div > div.thumb_item > div.poster_movie > span.rank_num').text
    star = tr.select_one('div > div.thumb_cont > span.txt_append > span:nth-child(1) > span').text
    doc = {
        'title':title,
        'star':star,
        'rank':rank
    }

👉 data = requests.get(URL)      //url을 열어서 html을 가지고옴

👉 soup =BeautifulSoup(data.text,'html.parser')   // beautifulsoup를 사용해서 검색하기 쉬운  html을 만듬

👉 soup.select를 사용 tr(=데이터)를 가지고 옴     

👉 for tr in trs:     // for 반복문 사용

👉 조건문으로 원하는 데이터 뽑아서 insert_one  //원하는 데이터 넣기


※title = a.text  /가져온 데이터의 문자값만 가지고옴

 

 

-----------------------------------------------------------------------------------------------------------------------------------------------------------------

 

3주차 강의 소감

파이썬 ,크롤링 , mongoDB 활용을 해서 작업을 해보았는데 내가 사용한 mysql쪽과 비슷한 점이 많아 수월하게 작업을 했다. 

단순하게 php만 사용했던 나는 파이썬이 얼마나 코드가 간단한지 알게 되었고 크롤링을 통해서 내가 원하는 사이트에서

원하는 값만 쉽게 가져올 수 있는 지를 배웠던 시간이였다.