본문 바로가기

data writing in google spreadsheet using python 2.7 파이썬 코드로 구글 스프레드시트에 데이터를 작성하는 방법에 대해서 정리해봅니다. 이 내용은 구글에서도 잘 정리해둔 것을 따라하면서 확인하는 정도입니다. 구글에서 정리한 내용을 보시려면 다음 링크를 클릭하세요. https://developers.google.com/sheets/api/quickstart/python 구글 스프레드시트를 사용할 예정이니 당연히 구글 계정이 있어야겠죠. 그외에는 python과 pip가 설치된 환경이면 문제 없을 것 같습니다. 1. 프로젝트 만들기 구글 API를 사용하기 위해서 하나의 프로젝트를 만들어야 하는데요. 아래 URL에 접속해서 프로젝트를 만들 수 있습니다. https://console.developers.google.com/flows/enableapi?apiid=she.. 더보기
파이썬 - time.struct_time (년도, 월, 일, 시간, 분, 요일, dst) 파이썬 time.struct_time 이 제가 작업하고 있던 내용에서 유용해서 정리해두려고 포스팅해봅니다. 일단 공식 문서를 확인해보고 각각을 한 번씩 실습해볼께요. https://docs.python.org/2/library/time.html#time.struct_time 일단 어떤 경로던지 time.struct_time 객체를 받아오는 것이 먼저입니다. date에서 time.struct_time 을 return 해주는 함수가 있는데요. timetuple()입니다. 아래 예제에서 오늘 날짜의 time.struct_time을 return 해주는 함수가 getTodayTimetuple 입니다. 일단 위 코드에서 사용된 time.struct_time는 2018년 2월 16일 0시 0분을 가르키고 있을 거에요.. 더보기
selenium webdriver browser window size 정적인 웹페이지를 파싱할 때는 beautifulsoup4 만 사용해도 되지만 동적인 웹페이지를 파싱할 대는 selenium을 통해서 실제로 브라우저를 열어서 데이터를 가져와서 파싱하는 편입니다. 이게 정답인지는 모르겠지만 (불편하거든요 : 브라우저가 열려야 하니깐 gui 없는 서버 환경에서는 작동하지 않아서요)스크롤이 움직이면 데이터를 로딩하는 페이지도 잘 파싱할 수 있어서 사용하고 있습니다. pip로 selenium을 설치하면 되고요. 2018.02.14. (아 발렌타인데이 군요) 기준 3.9.0이 최신입니다. pip install selenium 저는 크롬브라우저를 통해서 웹페이지에 접속하기 때문에 크롬드라이버를 다운받아서 적당한 곳에 위치시킵니다. 2018.02.14. 기준 2.35 버전이 최신이네.. 더보기
파이썬 - 날짜 구하기 (오늘, 이번달 1일, 날짜 차이) 최근에 개발한 것 중에 매일 매일 로그를 잘라서 처리하고 공유하는 스크립트가 있습니다. 이걸 하려다 보니깐 날짜와 관련된 datetime 라이브러리를 많이 사용하게 되네요. 간단하게 몇 가지만 정리해보려고 하는데요. 1. 오늘 날짜 2. 이번달 1일 (예를 들어서 2월 5일에 실행하면 2월 1일을 돌려받는 것) 3. 이번달 1일에서 오늘까지 차이 값 일단 코드는 아래와 같습니다. getCurrentUnixTime은 현재 시간의 unix time을 돌려주는 것이고요. getToday는 오늘 날짜를 돌려주는 것입니다. getFirstDayOfTheMonth 는 이번 달 1일을 돌려주는 함수고요. getDateInterval은 오늘이랑 이번달 1일과의 차이를 돌려주는 함수입니다. 실행결과는 아래와 같고요. 더보기
파이썬 print color 구글에서 python print colors 으로 검색하면 처음에 나오는 stackoverflow의 문서에 잘 나와있는데요. https://stackoverflow.com/questions/287871/print-in-terminal-with-colors 저는 주로 cli 로 실행되는 짧은 스크립트를 작성할 때 적용하고 있습니다. 색상을 지정해서 출력하는 것이 뭐가 그렇게 중요하냐고 하시면 할말이 많지는 않습니다. 스크립트의 진행상황을 좀 더 쉽게 파악할 수 있기 때문에 저는 좋아라 합니다. :-) 사용방법은 bcolors라는 클래스를 정의해두고 print 문 시작과 끝에 가져다 쓰면 됩니다. 이렇게 출력되고요. 더보기
파이썬 유닉스 시간(Unix Time) 구하기 파이썬에서 유닉스 시간 구하는 방법에 대해서 정리해둡니다. 일단 유닉스 시간은 여기 위키문서를 참고하세요. 파이썬에서 기본적으로 제공되는 datetime 라이브러리를 활용하면 유닉스 시간을 쉽게 구할 수 있어요. 아래 코드는 유닉스 시간을 구하는 예제를 나타냅니다. 먼저 getCurrentUnixTime 함수는 time.time()이라는 결과를 리턴하는데요.time.time()에 대한 자세한 설명은 여기 문서를 확인해보세요. 간단히 말해서 현재 시간에 대한 epoch time을 반환해주는 함수인데요. epoch time == unix time 이기 때문에현재 시간에 대한 유닉스시간 값을 손쉽게 얻을 수 있는 방법입니다. getTodayUnixTime은int(datetime.date.today().srtf.. 더보기
python RoboBrowser login submit (ajax login) 앞선 포스팅에서 RoboBrowser를 활용해서 레진코믹스 로그인을 수행하고 내서재 목록을 파싱하는 것을 정리한 적이 있습니다. Form을 활용한 것이였고 이번에는 Ajax로 로그인하는 것에 대해서 작성해두려고 합니다. 앞선 포스팅에 내용에서 많은 부분이 중복되기 때문에 혹시 아래 포스팅을 안보신 분들은 확인하고 아래 내용을 보시는 것이 더 이해가 쉬울 것 같습니다. 2017/06/08 - python RoboBrowser login submit 어떤 경우에 Form 을 활용해서 로그인하고 어떤 경우에 Ajax로 로그인해야 하는지는 웹 사이트 코드를 확인해봐야 합니다. Form 방식으로 해도 로그인 안되면 Javascript 코드를 확인해보면서 혹시 Ajax 방식으로 로그인되고 있는지 확인해보면 되겠죠... 더보기
파이썬 책이 많아졌네요 in 교보 얼마전에 교보문고에 가서 책을 구경했는데요. 파이썬 책이 참 많아 졌다고 느꼈어요. 아마도 머신러닝이 많은 관심을 받아서 자연스럽게 파이썬 관련 책들이 늘어난게 아닐까요? 아무튼 교보에서 파이썬 관련된 책들을 몇 권 찍어봤어요. 점프투파이썬도 있더라고요 !! 제가 처음 파이썬을 공부할 때 점프투파이썬을 웹으로 봤었거든요. 제일 깔끔한 것 같아요. 파이썬을 주로 사용하고 있는 저는 파이썬 책이 늘어난게 기쁘더라고요. 앞으로 국내에서 많은 파이썬 개발자들이 늘어나길 기대합니다. :-) 더보기
python RoboBrowser login submit 파이썬을 활용한 웹 파싱에 정말 유용하다고 생각하는 라이브러리가 beautifulsoup4 입니다. 하지만 beautifulsoup4는 로그인 후 보이는 페이지에 접근해서 파싱하기는 조금 불편합니다. 이를 편하게 해주는 것이 RoboBrowser 인데요. 꼭 로그인이 아니더라도 웹 서버와 인터렉션이 이뤄지고 파싱하기에 편리한 라이브러리입니다. 홈페이지는 다음과 같고 꽤 star 수도 높네요. https://github.com/jmcarp/robobrowser RoboBrowser는 내부적으로 Beautifulsoup를 활용하고 있기 때문에 Beautifulsoup를 사용하시던 분이라면 많은 코드를 그대로 사용하실 수 있습니다. 이번 포스팅에서는 login submit 하는 부분에 대해서 작성해두려고 합니.. 더보기
Html parsing - beautifulsoup4 (find all elements using attribute) 아래 포스팅들에서 이어집니다. :-) 2016/08/21 - Html parsing - beautifulsoup4 (child element) 2016/08/21 - Html parsing - beautifulsoup4 (find_all image src) 2016/08/20 - Html parsing - beautifulsoup4 (install) 위 포스팅들을 보면 주로 find_all 에서 class 이름으로 elements를 찾는데요. 전 이게 일반적이라고 봅니다. 대부분의 사이트에서는 class 이름만으로 찾기가 가능하다고 생각하거든요. 이번 포스팅에서는 class가 아니라 다른 attribute를 활용해서 elements를 찾는 것에 대해서 작성해둡니다. 이 포스팅 내용은 아래 URL에서도 찾.. 더보기
How to send message to Slack channel using python code AWS Lambda Python 예제를 보면 cloudwatch-alarm-to-slack-python 가 있습니다. 이름에서도 알 수 있듯이 Cloudwatch 에서 알람이 발생하면 Slack으로 메세지를 보내주는 예제입니다. 저도 사용하고 있고 꽤 유용해요 !! 이번 포스팅에서는 이 예제를 사용해서 Lambda가 아닌 환경에서 Python 코드를 사용해서 Slack에 메세지를 보내는 것을 정리해보려고 합니다. 1. Slack에 메세지를 보내기 위해서는 Incoming WebHooks URL이 필요합니다. 하나 만들어주세요. - https://YOUR-TEAM-URL.slack.com/apps/search?q=incomming 위 주소에 접속해보면 제일 처음에 나오는 것이 Incomming WebHoo.. 더보기
Django User Password Change using Command Line Django 사용자 패스워드를 변경하기 위한 Command Line은 아래와 같아요. python manage.py changepassword user_name 입력하게 되면 password를 다시 입력할 수 있습니다.successfully for user 'user_name' 메시지가 나왔다면 성공적으로 변경된 것입니다. 더보기
Django Admin : edit link disable Django Admin 페이지에서 모델에 대한 객체를 추가하거나 삭제, 수정하는 것이 가능하죠. 아무런 설정을 하지 않았다면 아래와 같은 그림을 볼 수 있습니다. 주로 ID를 선택하면 수정 페이지로 이동합니다. 아래는 수정 페이지이고요. 코드에 아래와 같이 list_display_links = None으로 설정하면 수정페이지로 이동하는 링크가 모두 제거됩니다. 잘 안보이실 수도 있지만 ID Column은 링크가 삭제되면서 평범한 텍스트가 되었습니다. 당연히 클릭해도 아무런 반응이 없습니다. 이번에는 list_display_links에 몇 개의 column을 입력해봤습니다.결과는 쉽게 예상되시죠? 아래 그림과 같이 list_display_links 에 지정한 column에 모두 링크가 생성되었습니다. 아래.. 더보기
Django Rest Framework : 3.3.3 to 3.5.x Django를 1.9.x 에서 1.10.x로 올리면 Django Rest Framework 도 올려줘야 합니다. 저는 아마도 3.3.3 에서 3.5.x 로 올렸는데요. 몇 가지 에러가 있었던 것 같지만 가장 기억에 남는 부분은 Serializer에 fileds 값을 잘 지정해야 한다는 것입니다. 3.3.3 에서는 fields 값을 지정하지 않으면 자동으로 모든 값에 대해서 serializer가 작동했다면 3.5.x에서는 모두 사용할 것이라면 __all__으로 지정해야하고 그렇지 않다면 특정 field를 지정해줘야 합니다. 그러니깐 소스코드를 보시죠. 3.3.3에서도 특정 field를 사용했던 코드는 문제 없이 작동하겠죠. 다만 모든 field를 사용하기 위해서 비워두고 지나갔던 코드들은 3.5.x에서 에.. 더보기
Django Admin : list_filter, ForeignKey 이전 글에 좀 더 붙여봅니다. 2017/04/16 - Django Admin : list_filter, SimpleListFilter 앞의 포스팅의 결론은 SimpleListFilter로 필요한 것들을 만들 수 있다는 것이고요. (물론 다는 아니겠지만요 !) 여기서는 SimpleListFilter에 사용되는 Column이 ForeignKey 값을 가지고 있으면 어떻게 해야 하는 지에 대해서 적어둡니다.Django를 많이 사용하시는 분들은 당연히 잘 아시겠지만 __ (언더 바 2개) 로 ForeignKey가 가르키고 있는 데이터에 접근할 수 있는데요.SimpleListFilter에 parameter_name에도 동일하게 적용됩니다. Filter가 추가되는 모델에는 book이라는 ForeignKey가 존재하.. 더보기
Django Admin : list_filter, SimpleListFilter Django Admin 페이지에서 하나의 모델을 선택하면 아래와 같이 필터는 없고 데이터만 쭉 나열된 것을 볼 수 있죠. 여기에 Filter 2개를 추가해보면 좋을 것 같네요. 하나의 Filter는 Status를 True / False 를 선택적으로 볼 수 있도록 하는 것을 하고요. 또 다른 하나는 item_code를 특정 값 이하만 볼 수 있도록 하는 Filter를 달아보겠습니다. 첫 번째 것은 정말 쉬운 것 같아요. admin.py에 아래와 같이 추가하면 끝입니다. BooleanFieldListFilter를 하나 추가한 것이 끝입니다. 결과는 아래와 같이 오른쪽에 Filter가 추가되어 나타납니다. 이 필터를 누르면 데이터가 필터링되어서 보여지죠. 많은 데이터가 있고 내가 원하는 결과를 빠르게 보기 .. 더보기