기타/파이썬 금융 데이터 분석
6. 파이썬 실습
bright jazz music
2021. 12. 25. 00:36
파이선의 문법의 구성요소
함수(def) ==> 클래스(class) ==> 모듈(module) ==> 라이브러리(library)
모듈은 파이썬 프로그램 단위로 생성된다. 즉, file.py라는 파일이 file이라는 모듈이 된다. 이 모듈 안에는 여러 개의 클래스가 존재할 수 있고, 클래스 안에는 여러 개의 함수가 존재할 수 있다.
외부 모듈을 가져올 때는 "import 모듈명"을 추가한다. 모듈이 어려 개 있는 라이브러리에서 특정 모듈만을 호출(임포트) 할 때는 "import 라이브러리명.모듈명"을 사용한다. 모듈에 있는 특정 함수만을 호출할 때는 from 모듈명 import 함수명"을 사용한다. 이는 불필요한 임포트를 최소화 하기 위함이다. 또한 긴 모듈을 줄이기 위해 as를 사용하기도 한다.
import bs4 # bs4라는 외부 모듈을 가져온다.
# urllib이라는 라이브러리 내의 request 모듈에 있는 urlopen 함수를 가져온다.
from urllib.request import urlopen
import pandas as pd # pandas라는 모듈을 pd라는 이름으로 가져온다
뷰티플 수프 사용하기.
뷰티플 수프란?
Beutiful Soup는 인터넷 상에서 데이터를 수집할 때 유용하게 사용되는 파이썬 패키지.
HTML이나 XML로 작성된 파일을
- pull (가져오기)
- navigate and search (내용 찾기)
- parse (분석하기)
실습 순서.
- 주피터 노트북 실행
- finEng 폴더 접근
- 06. BeautifulSoup.py 파일 생성 (ipynb 형식으로 만들어야 한다. 주피터 노트북으로 실습할 거면. BeutifulSoup.ipynb)
- 코드 입력 후 실행
데이터를 수집하려면 HTML 문법을 이해해야 수월.
실습 중간에 주피터 노트북을 껐다가 다시 진행한다면 주피터 노트북 상단 메뉴의 kernel > Restart & Run All 버튼을 눌러 전체 실행해서 앞부분 결괏값을 메모리에 저장한 후 진행해야 함.
#!/usr/bin/env python
# coding: utf-8
# In[ ]:
#http://book.finterstellar.com/sample.html
import bs4 # bs4라는 외부 모듈을 가져온다
# urllib라는 라이브러리 내의 request 모듈에 있는 urlopen 함수를 가져온다
from urllib.request import urlopen
import pandas as pd # pandas라는 모듈을 pd라는 이름으로 가져온다
# In[2]:
html_doc = """
<html><head><title>The Office</title></head>
<body>
<p class="title"><b>The Office</b></p>
<p class="story">In my office, there are four officers,
<a href="http://example.com/YW" class="member">YW</a>,
<a href="http://example.com/JK" class="member">JK</a>,
<a href="http://example.com/YJ" class="member">YJ</a> and
<a href="http://example.com/KS" class="member">KS</a>
.</p>
<p class="story">...</p>
"""
# In[3]:
from bs4 import BeautifulSoup
#bs4 라이브러리에서 BeautifulSoup 패키지 가져오기
# In[4]:
soup = BeautifulSoup(html_doc, 'html.parser')
#뷰티플 수프 함수를 이용해 html_doc을 해석해서 soup에 저장.
#파싱 시 HTML코드를 분석해서 태그별로 서브 변수를 생성해 내용을 저장
# 따라서 사용자는 소스 내에 있는 태그 단위로 정보 컨트롤 가능
# In[10]:
print(soup.prettify())
# In[5]:
soup.title
#title태그를 통째로 가져오기
# In[6]:
soup.title.text
#태그 제거하고 text만 가져오기
# In[7]:
soup.a
# a 태그를 통째로 가져옴(첫 번째만 가져옴)
# In[8]:
soup.find_all('a')
#따라서 모두 가져오기를 사용
# In[19]:
soup.find_all('a').text
#텍스트만 가져오려고 했지만 오류남. 결과가 리스트 형태이기 때문에 바로 위의 메소드로는 값을 찾을 수 업음.
# In[9]:
soup.find_all('a')
#리스트에 담긴 값을 모두 가져오기
# In[11]:
soup.find_all('a')[2]
# 2번 인덱스( 순서로는 세 번째)에 해당하는 값을 가져옴
# In[17]:
memberList = soup.find_all('a') #memberList 변수에 멤버 목록 담기. 그리고 출력
for m in memberList:
print(m.)
# In[ ]: