블로그 이미지
잡다한 취미 생활 및 일상에 대한 소소한 이야기를 적어나가는 블로그입니다.
붉은kkk

공지사항

최근에 올라온 글

최근에 달린 댓글

글 보관함

calendar

1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

프로그래밍을 처음 시작해서 공부하다 보면 어떤 테크트리(?)로 공부를 해야될지 막막할 때가 있을 것 같습니다.

그럴땐 백준 알고리즘 사이트에서 도움을 받아보면 어떨까요?

https://www.acmicpc.net/

 

Baekjoon Online Judge

Baekjoon Online Judge 프로그래밍 문제를 풀고 온라인으로 채점받을 수 있는 곳입니다.

www.acmicpc.net

저도 아직 활용해보진 않았지만, 프로그래밍 실력을 높이는데 유용할 것 같은 사이트입니다.

 

저도 프로그래밍을 취미로 하고는 있지만, 하다보니 점차 실력을 높이고 싶은 욕구가 생기기도 하고 있는데

알고리즘은 어떻게 공부하지? 란 생각에 검색하다가 알게된 사이트에요.

 

아래 캡쳐된 사이트 메인을 보면 문제부터~ 강의까지 메뉴가 구성되어 있습니다.

 

실제 사용을 해보지 않고서는 얘기드릴 수 있는 부분은 한정될 수 밖에 없기에 오늘의 포스팅은 여기서 마무리 하도록 하겠습니다.

 

 

[24. 웹자동화] selenium 설치

2019. 9. 26. 22:33 | Posted by 붉은kkk

웹자동화는 파이썬을 이용하여 웹에서의 동작을 원하는 형태로 자동화 시킬 수 있는 것을 의미합니다.

웹자동화에 필요한 라이브러리는 selenium으로 아래와 같이 설치해 줍니다.

>>>pip install selenium

 

이미 설치가 되어 있어서 다운로드 과정은 나오지 않았습니다.

 

selenium을 설치한 다음에는 자동화를 위한 브라우저 및 브라우저 driver가 필요합니다.

저는 크롬을 사용하고 있기 때문에 크롬으로 설명을 드리겠습니다. 

 

크롬 드라이버 설치전 설치된 크롬의 버전을 확인해 줍니다.

 

버전 77.0 이네요.

마지막으로 크롬 드라이버 설치를 진행해 줍니다.

버전에 맞는 드라이버를 선택한 후 다운로드 하시면 됩니다.

 

이제, 웹 자동화를 위한 기본적인 라이브러리 및 웹드라이버 설치가 끝이 났습니다.

 

 

selenium을 통한 웹자동화 실제 사용은 다음 포스팅에 설명하도록 하겠습니다.

지난 포스팅에 이어 Pandas로 시작하는 데이터 분석#1-1입니다.

 

우선 한글 표현관련... 지금 포스팅을 작성하는 PC에서는 엑셀 파일을 로드한 후에는 

Matplotlib를 이용한 그래프를 출력시 한글이 깨지는 문제가 존재함을 확인하였습니다.

 

다른 PC에서는 한글 표현이 제대로 되는 것을 확인하였기 때문에 한글이 깨지는 

정확한 이유는 알 수가 없어서 설명을 못드리겠습니다.

 

이번 포스팅에서는 한글 폰트 사용에 대한 설정 방법을 알려드리도록 하겠습니다. 

 


#한글 폰트 사용
from matplotlib import font_manager,rc
import matplotlib
import matplotlib.pyplot as plt
 
#폰트 경로
font_path = "C:/Windows/Fonts/자신의한글폰트.ttf"
 
#폰트 이름 얻어오기
font_name = font_manager.FontProperties(fname=font_path).get_name()
 
#font 설정

matplotlib.rc('font',family=font_name)
 
#작업

plt.plot([1,2,3,4])

plt.xlabel("시간")

plt.ylabel("거리")

plt.show()


 

파일 로드 없이 그래프 출력시에는 정상적으로 한글이 표시가 됩니다.

 

Pandas는 데이터 분석용 오픈 소스 라이브러리입니다.
Python Data Analysis Library
https://pandas.pydata.org/

 

Python Data Analysis Library — pandas: Python Data Analysis Library

Python Data Analysis Library pandas is an open source, BSD-licensed library providing high-performance, easy-to-use data structures and data analysis tools for the Python programming language. pandas is a NumFOCUS sponsored project. This will help ensure t

pandas.pydata.org

이 글을 쓰는 시점엔 0.251 버전이 릴리즈 되어 있네요.

 

이번에 연습해보려고 하는 데이터 분석은 아래 2가지 형태입니다.

(기능적으로는 크게 3가지로 구분됩니다. - 파일 읽기, 필터링, Plot 그리기)

 

1. 엑셀 or CSV 파일 읽고 Plot 그리기                                 

2. 엑셀 or CSV 파일 읽고, 원하는 형태로 필터링 후 Plot 그리기

 

하나하나 차근히 코드를 작성해보겠습니다.

 

우선 엑셀 데이터를 준비해주세요.

전 간단하게 아래와 같은 테이블을 만들었습니다.

엑셀 파일 또는 csv파일로 저장해주세요. 전 test.csv파일로 저장했습니다.

 

1. 엑셀 or CSV 파일 읽고 Plot 그리기                                 

- Pandas 라이브러리를 pd로 쓰겠다고 import 한 다음, 미리 만들어둔 csv 파일을 읽는 코드입니다.

- *cp949 : 한국어판 마이크로 윈도우즈의 기본 코드 페이지, 한글 인코딩의 한 종류로 EUC-KR의 확장형이다.

              '통합 완성형' 이나 '확장 완성형' 이라고도 한다.

- *utf-8 : UTF-8 방식은 대표적인 조합형의 유니코드 인코딩 방식
-----------------------------------------------------------------------------------------------------------------------------------

import pandas as pd

 

data = pd.read_csv('data/test.csv', encoding='cp949')

print(data)

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

파일 읽기 완성

 

 

그래프는 잘 나왔는데... 한글이 깨졌네요.

한글이 제대로 나오게 하려면 아래와 같이 코드를 추가해 줍니다.

...??? 되어야 하는데. 안되네요. 오늘은 여기까지만 포스팅 하겠습니다.

 

예전에 유행했던 적이 있는 유튜브 동영상 다운로더를 파이썬으로 만들어 보았습니다.



※ 주의

유튜브 다운로더는 엄연히 유튜브 약관 위반이므로 사용시 발생되는 모든 책임은 스스로 책임지셔야 함을 알려드립니다.


B. 콘텐츠는 있는 그대로 귀하에게 제공됩니다. 귀하는 본 서비스의 제공된 기능을 통하여 의도한 대로, 그리고 본 약관에 의해 허용된 대로 참고 목적 또는 개인적인 목적에 한하여 콘텐츠에 접속할 수 있습니다. 귀하는 해당 콘텐츠에 대하여 본 서비스에서 YouTube가 표시한 “다운로드” 또는 그와 유사한 링크를 발견하지 않는 한 콘텐츠를 다운로드 하면 안 됩니다. 귀하는 YouTube 또는 각 콘텐츠의 라이센서의 사전 서면 동의 없이는 어떠한 목적으로도 콘텐츠를 복사, 복제(reproduce), 온라인으로 제공하거나 전자적인 방법으로 전송하거나, 발표, 각색, 배포, 전송, 방송, 전시(display), 판매, 라이센스 허여하거나 달리 이용하지 않아야 합니다. YouTube와 라이센서들은 본 서비스 및 콘텐츠에서 명시적으로 허여되지 않은 모든 권리를 보유합니다.



준비물

1. pytube

   : 유튜브 영상을 다운로드 받을 수 있게 해주는 라이브러리입니다.

     https://python-pytube.readthedocs.io/en/latest/ 


라이브러리 다운로드를 먼저 해 주세요.


>>> pip install pytube

끝입니다.


실행은 스스로 해보세요^^ 

웹크롤러는 과정이 길어질것 같아서 중간중간 다른 포스팅도 섞어가면서 연습을 하도록 할게요.


이번 시간엔 그간 아쉬웠던 파이썬의 GUI 프로그래밍 관련된 내용입니다.



지금까지 파이썬 프로그래밍을 연습해보면서 console에서만 실행 되는 모습이 조금 아쉬웠습니다.


그래서 찾아보니, 윈도우 GUI 디자인툴이 있더군요.


PyQt5라는 크로스플랫폼을 통해서 윈도우 GUI를 꾸밀 수 있다는 걸 확인했습니다.

- PyQt is a set of Python v2 and v3 bindings for The Qt Company's Qt application   

  framework and runs on all platforms supported by Qt including Windows, OS X, Linux,   

  iOS  and Android



설치해보고 직접 연습을 해봐야겠죠?


- 다운로드 사이트 주소 : https://www.riverbankcomputing.com/software/pyqt/download5



소스 패키지를 다운로드 해도 되고, 기존에 라이브러리 설치하듯 PyQt를 설치해도 됩니다.


PyQt를 설치했으니, 예제를 하나 작성 해 볼게요.

Hellow world 출력을 버튼으로 만들어 보겠습니다.



완성입니다.


윈도우 GUI 작성이 잘 되네요. 

아직 코드로 만들어내야되서 조금 불편한 부분이 남아있습니다. Qt 디자이너 툴이라는 것도 있는거 같으니까

다음엔 그것도 알아봐야겠네요.


다음 포스팅으로 뵐게요.



파이썬으로 만든 프로그램을 파이썬이 없는 곳에서도 실행하고 싶다면, 단독 실행파일로 만들어 줘야 됩니다.


오늘은 파이썬 응용 프로그램을 .exe 파일 (실행파일) 로 만들어 보겠습니다.


우선 필요한 건 아래와 같은 라이브러리에요.



    Pyinstaller 

  py2exe



구글링으로 찾은 라이브러리인데, py2exe는 python2 버전에서 잘 된다라는 내용들이 적혀 있네요.

전 3.7 버전을 사용하고 있는 관계로 Pyinstaller로 실행파일을 만들어 보겠습니다.


실행 파일로 만들 프로그램은 지난 시간에 만들었던 워드클라우드 파일이어서 따로 코딩은 하지 않겠습니다.



pip으로 라이브러리를 설치하고, (설치는 pip install pyinstaller)

처음에 설치를 잘 못한 게 있었네요. (오타로 인해 pip install pyinstall, 이건 나중에 삭제해야겠네요.)



다 끝나 갑니다.


이제 실행파일을 만들어 봐야겠어요.



pyinstaller --onefile <your_script_name>.py 이렇게 하면 된다고 되어있네요. 지난 시간에 만든 wordcloud1.py에 적용해서 해보니까... 안됩니다 ㅠㅠ (다른방법을 찾아봐야 겠네요) 우선 가볍게 Hello World 소스 부터 실행 파일로 만들어 볼게요. 실행은 pyinstaller ex1.py (ex1.py는 첫시간에 만들어 둔 파일입니다.)

소스로는 고작 1줄인데 뭔가가 엄청...진행 됐어요.

새로운 폴더가 만들어져 있네요. (build와 dist) dist폴더내에 ex1폴더가 있고 그 곳에 실행파일이 만들어져 있는걸 확인했습니다.

윈도우에서 실행하면 console창이 떴다가 사라지네요.

console모드에서는 잘 실행되는걸 확인할 수 있습니다.





이번엔 이렇게 파이썬에서도 실행파일을 만들 수 있다란 것을 알았단 사실에 만족해야 될 것 같네요.

계속 공부하면서 더 간단히 깔끔한 exe 파일 만드는 방법을 새로 찾아보고 새로운게 있다면 다시 포스팅 해 볼게요.





이제 드디어 제가 파이썬을 사용하고자 한 계기가 됐던 워드 클라우드 만들기 입니다.


빅데이터 분석에 대한 책 & 광고 등을 보다 보면 빠지지 않고 등장했었던 것 같아요. 


시각적으로 바로 알기 쉽게 한번 보여드리고~


이렇게 단어의 빈도수 등을 고려해서, 글자의 크기, 색깔 등등이 강조되서 나오는게 워드 클라우드입니다. 


휴... 한글폰트의 사용이 어려워서 고생했던 생각이 잠깐 나네요. (몇시간을 헤맸습니다...)


이제 윈도우환경에서 워드 클라우드를 구현하기 위해 해야될 일들을 하나 하나 알려드릴게요.


1. 네이버 나눔글꼴 설치

https://hangeul.naver.com/2017/nanum

위 링크로 들어가서 네이버 나눔글꼴을 설치해줍시다. (무료 폰트여서 사용하는데 문제가 없답니다.)

- 나눔글꼴의 지적 재산권은 네이버, 네이버문화재단에 있으며,  오픈 라이선스로 자유롭게 수정하고 재배포 하실 수 있습니다



2. 워드클라우드 라이브러리 설치

     pip install wordcloud

     - pip 설치는 지난 시간에 설명을 했기 때문에, 상세 내용은 생략할게요. 

       

     http://nearman.tistory.com/entry/3-그래프출력-파이썬-matplotlib-그래프-출력-한글폰트-사용 

     


3. 워드클라우드로 표현하고 싶은 텍스트 자료 준비

   - 저는 test.txt 파일에 내용을 기입해서 준비를 해볼게요.

     "워드 클라우드 파이썬 단어구름 빅데이터 분석
      Wordcloud python big data analysis 워드클라우드 워드클라우드 워드클라우드 

      python python python python
     워드클라우드 워드클라우드 워드클라우드 워드클라우드 워드클라우드 워드클라우드 워드클라우드 

     워드클라우드
     python python python python python python python python python python python python python   

     python"

   

4. 코딩을 통해 워드클라우드 표현

   - 코드 몇 줄 되지 않습니다. 너무 간단해서 이래도 되나 싶을 정도네요.


1: import matplotlib.pyplot as plt
2: from wordcloud import WordCloud

3: 
4: font_path = 'c:\\windows\\fonts\\NanumGothic.ttf'
5: wordcloud = WordCloud(
6:     font_path = font_path,
7:    width = 800,
8:    height = 800
9:    )
10:
11: text=open('test.txt').read()
12: wordcloud = wordcloud.generate(text)
13: 
14: fig = plt.figure(figsize=(12,12))
15: plt.imshow(wordcloud)
16: plt.axis("off")
17: plt.show()
18: fig.savefig('wordcloud_without_axisoff.png')


코드는 크게 설명드릴 부분이 없을 정도로 직관적으로 이해하실 수 있을 거라 생각되네요.


'라이브러리를 사용할 수 있게 하고

Font 설정을 하고

Text 파일을 읽고

wordcloud를 사용해서 화면에 부려주고

파일로 저장합니다.'




 [최종 실행 화면]

이로써 워드 클라우드 구현을 해보았습니다.


다음엔 더 재밌는 걸로 찾아뵐게요.

이전 1 2 다음