Skip to content
Snippets Groups Projects
Commit 48563198 authored by Mingi Song's avatar Mingi Song
Browse files

Update README.md

parent 1e683bbe
No related branches found
No related tags found
No related merge requests found
......@@ -3,11 +3,13 @@
## * Python Request(리퀘스츠) 라이브러리 사용법 소개 및 활용을 통한 주식 가격 알림이 프로그램 제작
### 목차
[서론](#서론)
1. [Python이란?](#Python이란?)
2. [Python 라이브러리 'Requests'](Python-라이브러리-'Requests')
3. [Requests 예제](Requests-예제)
4. [주식 가격 알림이 제작 및 실습](주식-가격-알림이-제작-및-실습)
5. [마무리](마무리)
6.
## Python이란?
### Python이란?
- 1990년 암스테르담의 귀도 반 로섬이 개발한 인터프리터 언어이다.
......@@ -61,30 +63,81 @@
## Requests 예제
### Naver에 HTTP 요청 보내기
- 네이버에 http 요청을 보내, 네이버의 html 데이터를 불러오도록 해보자.
![1](https://git.ajou.ac.kr/cjksong/foss-final-project/-/raw/main/figure/%EA%B7%B8%EB%A6%BC1.png)
- 위와 같이
`request.get(url)`
를 통해서 html 데이터를 불러올 수 있다.
![2](https://git.ajou.ac.kr/cjksong/foss-final-project/-/raw/main/figure/%EA%B7%B8%EB%A6%BC3.png)
- 결과값은 http status가 출력되는 것을 확인할 수 있다.
![3](https://git.ajou.ac.kr/cjksong/foss-final-project/-/raw/main/figure/%EA%B7%B8%EB%A6%BC4.png)
- html 데이터를 담고 있는 변수 'response'를 text 형태로 출력하면 다음과 같다.
![4](https://git.ajou.ac.kr/cjksong/foss-final-project/-/raw/main/figure/%EA%B7%B8%EB%A6%BC5.png)
### Naver에 HTTP 요청 보내기 - beautifulSoup 응용
- requests를 통해서 불러온 html 데이터는 단순히 string형태이기 때문에, 이 데이터를 html형태로 파싱해줘야한다.
- 이때, beautifulSoup를 통해서 html로 파싱할 수 있다.
![5](https://git.ajou.ac.kr/cjksong/foss-final-project/-/raw/main/figure/%EA%B7%B8%EB%A6%BC6.png)
- 위와 같이 변수 'response'를 `bs(html 데이터, 'html.parser')` 를 통해서 html형태로 바꾸어 줄 수 있다.
- 또한 `find(태그, 속성)` 함수를 통해서 html 데이터에서 원하는 정보를 가져올 수 있다.
![6](https://git.ajou.ac.kr/cjksong/foss-final-project/-/raw/main/figure/%EA%B7%B8%EB%A6%BC7.png)
- 위와 같은 경우에는 'a' 태그이면서 'class= link_set'의 속성을 가지는 html 데이터를 호출하였다.
![7](https://git.ajou.ac.kr/cjksong/foss-final-project/-/raw/main/figure/%EA%B7%B8%EB%A6%BC8.png)
## 주식 가격 알림이 제작 및 실습
- 앞에서 배운 requests와 beautifulSoup 라이브러리를 응용하여 주식 가격 알림이 프로그램을 제작해보자.
- 주식 가격 알림이 : 종목의 현재가를 알려주는 프로그램
### 주식 가격 알림이 설계
#### 기능 1 - 종목 현재가 조회
- 주식 종목 이름 기입한다.
- 현재가를 조회 후 출력한다.
- 일치하는 종목이 없을 경우 메인 화면으로 복귀한다.
#### 기능 2 - 지정 종목의 현재가를 일정 시간 간격으로 조회
- 지정 주식 종목의 이름 기입한다.
- 1분 간격으로 주식의 현재가를 조회 후 출력한다.
- 주식 시장이 끝나는 3시 20분에 자동 종료한다.
#### 기능 3 - 종료
- 프로그램 종료
#### 사이트
![시세창](https://git.ajou.ac.kr/cjksong/foss-final-project/-/raw/main/figure/%EA%B7%B8%EB%A6%BC9.png)
- 네이버 금융 국내증시 시가총액('https://finance.naver.com/sise/sise_market_sum.nhn?page=')페이지에서 requests를 통해서 각 종목의 이름과 현재가를 불러오도록 할 것이다.
### 가격 조회 알고리즘 - finding_stock_price(stock_name)
1. 해당 url의 html 정보를 requests 한다.
2. 얻어온 정보를 beautifulSoup를 통해 html로 변환
3. html 태그를 통하여 n번 페이지의 주식 data를 리스트에 저장한다.
4. for문을 통해 찾고자 하는 주식의 종목이 있는지를 확인한다.
5. 없을 경우 다음 페이지를 검색한다.
### 가격 조회 알고리즘
![알고리즘](https://git.ajou.ac.kr/cjksong/foss-final-project/-/raw/main/figure/%EA%B7%B8%EB%A6%BC11.png)
### 실행파일로 만들기
- 실행 파일로 배포하기 위하여 'pyinstaller'를 사용한다.
#### pyinstaller 설치 방법
![10](https://git.ajou.ac.kr/cjksong/foss-final-project/-/raw/main/figure/%EA%B7%B8%EB%A6%BC13.png)
#### pyinstaller를 통해 exe파일 만들기
![11](https://git.ajou.ac.kr/cjksong/foss-final-project/-/raw/main/figure/%EA%B7%B8%EB%A6%BC13.png)
### 주식 가격 알림이 프로그램
#### 기능 1
![기능1](https://git.ajou.ac.kr/cjksong/foss-final-project/-/raw/main/figure/%EA%B7%B8%EB%A6%BC16.png)
- 주식 종목명을 기입하였을 때, 현재가가 출력되는 것을 확인할 수 있다.
#### 기능 2
![기능2](https://git.ajou.ac.kr/cjksong/foss-final-project/-/raw/main/figure/%EA%B7%B8%EB%A6%BC17.png)
- 1분 간격으로 기입한 종목의 현재가가 갱신되어 출력되는 것을 확인할 수 있다.
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment