본문 바로가기

항해99/웹 개발 종합반 강의

[스파르타코딩클럽] 웹개발 종합반 - 3주차 (3-1~3-8)

git 설치 방법

Mac은 git이 기본적으로 내장되어 있어 설치를 할 요가 없다.

https://git-scm.com/

에 들어가 자료를 다운로드하고 설치를 해주면 된다.

 

vs code 에서 git bash를 세팅해 주는 방법은, 

Ctrl + Shift + P를 눌러 터미널 창을 띄워준 후,  Terminal: Select Default Shell을 입력하고 Git Bash를 선택해 주면 된다.

그러면 VS Code에서 새 터미널을 열 때(ctrl+`), Git Bash가 기본으로 선택된다.

 

다음으로, python을 활용해줄 가상 환경을 세팅해 주기 위하여 

Ctrl + Shift + P를 눌러 env를 검색 후 venv를 실행해 주면 된다.

venv 설치가 중요한 이유는 공구 상자를 열어둬야 도구를 담을 수 있기 때문이다.

 

왜 venv를 사용하는가?

누군가가 잘 만든 도구를 활용할 줄 아는 것은 개발자의 좋은 소양이기 때문이다.

 

먼저 python3 .venv 가상환경에 request를 설치하는 법에 대하여 배우게 되었는데, 

# 가상환경 생성
python -m venv .venv

# 가상환경 활성화
.venv/Scripts/activate

# requests 패키지 설치
pip install requests

다음과 같은 순서로 설치하면 되었다.

 

파이썬 파일을 실행할때, 출력창에 한글이 깨지게 된다면 이 항목을 확인해 주면 된다.

한글이 깨져서 출력된다면, beta에 체크표시가 안됐는지 확인해 보면 좋을 거 같다.

 

request를 사용하여 api로부터 데이터를 가져오거나, 웹 스크래핑을 할 수도 있다.

 

웹 스크래핑을 위해선 먼저 bs4, beatuifulsoap4를 설치해야한다.

 

pip install requests bs4

를 콘솔에 입력해 준 후,

import requests
from bs4 import BeautifulSoup

URL = "https://search.naver.com/search.naver?where=nexearch&sm=top_hty&fbm=0&ie=utf8&query=날씨"
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')

다음과 같은 코드를 작성하여 웹페이지의 정보를 전부 가져오는 코드를 작성할 수 있다.

 

다만 여기서 print(soup)와 같은 값들을 보기 위해선, python 파일을 터미널에서 실행해야 직접 볼 수 있다.

 

이 데이터들을 원하는 데이터들만 고르기 위해선 select, select_one 함수를 사용해야 하며, 양식은 다음과 같다.

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

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

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

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

 

또한 태그 내부의 값을 불러오기 위해선 >을 사용해 주면 되며,. contents를 통하여 html 태그 안의 값들을 리스트에 담을 수 있다.

temp = soup.select_one('.temperature_text > strong').contents[1]
cloud = soup.select_one('.weather').text
humid = soup.select_one('.summary_list > div:nth-child(2) > dd').text
wind = soup.select_one('.summary_list > div:nth-child(3) > dd').text

print(temp, cloud, humid, wind)