본문 바로가기

django-crontab 소개 (특정 모듈 주기적으로 실행하기) Django-crontab 적용하기 django-crontab으로 특정한 모듈을 주기적으로 실행하는 것이 가능합니다. 물론 직접 crontab에 잘 작성하는 것도 방법이겠지만 라이브러리로 어느정도 간단하게 관리가 가능하니까 사용하는 것이 좋을 것 같습니다. 설치는 pip install django-crontab settings.py에 아래와 같은 내용을 포함해줍니다. INSTALLED_APPS = [ ... ... 'django-crontab', ] ... ... CRONJOBS = [ ('* * * * *', 'app_name.file_name.def_name', '>> /log_path/log_file.log') ] INSTALLED_APPS는 당연한거니까 PASS ! CRONJOBS에 적절히 추가해.. 더보기
django allauth models 를 admin에서 unregister하기 django allauth 많이 사용하시죠. 저도 사용하고 있는데 진짜 단순한 기능만 몇 개 사용하는데 admin에서는 많은 model들이 추가로 불려져서 복잡해지곤 합니다. 그래서 저는 안쓰는 것들은 admin에서 안보이게 하고 싶었고요. 아래와 같은 코드로 일부 allauth에서 추가되는 것들을 admin에서 제거했습니다. admin.site.unregister(model_name) 이런 식으로 작성하시면 되는데 저는 EmailAddress, SocialAccount, SocialToken, SocialApp 모델을 사이트에서 안보이게 하고 싶었습니다. 일단 allauth를 추가하시고 admin 사이트에 들어가보셔서 사용하실 것들은 남기고 필요 없는 것만 unregister 하시면됩니다. 만약 소셜 .. 더보기
Selenium Webdriver 활용 Instagram Login 해보기 (Python) Selenium Webdriver를 활용하면 웹 파싱이나 반복작업 등을 처리할 수 있습니다. 여기서는 간단하게 Instagram Login을 해보는 과정을 작성해봅니다. 환경설정이나 라이브러리 설치는 건너뛰고요. 저는 chromedriver를 활용해서 해보겠습니다. chromedriver는 아래 주소에서 받으실 수 있습니다. 적당한 곳에 다운로드 및 위치 해두면 됩니다. chromedriver : http://chromedriver.chromium.org/ 일단 인스타그램 로그인 페이지를 띄워보고 어떻게 할지 작성할게요. 아래와 같은 창인데요. 단순하게 Id 역할을 하는 phone number, username, or email 입력하는 input이 하나 있고요. password input이 하나 있습니.. 더보기
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.. 더보기
selenium webdriver browser window size 정적인 웹페이지를 파싱할 때는 beautifulsoup4 만 사용해도 되지만 동적인 웹페이지를 파싱할 대는 selenium을 통해서 실제로 브라우저를 열어서 데이터를 가져와서 파싱하는 편입니다. 이게 정답인지는 모르겠지만 (불편하거든요 : 브라우저가 열려야 하니깐 gui 없는 서버 환경에서는 작동하지 않아서요)스크롤이 움직이면 데이터를 로딩하는 페이지도 잘 파싱할 수 있어서 사용하고 있습니다. pip로 selenium을 설치하면 되고요. 2018.02.14. (아 발렌타인데이 군요) 기준 3.9.0이 최신입니다. pip install selenium 저는 크롬브라우저를 통해서 웹페이지에 접속하기 때문에 크롬드라이버를 다운받아서 적당한 곳에 위치시킵니다. 2018.02.14. 기준 2.35 버전이 최신이네.. 더보기
python RoboBrowser login submit (ajax login) 앞선 포스팅에서 RoboBrowser를 활용해서 레진코믹스 로그인을 수행하고 내서재 목록을 파싱하는 것을 정리한 적이 있습니다. Form을 활용한 것이였고 이번에는 Ajax로 로그인하는 것에 대해서 작성해두려고 합니다. 앞선 포스팅에 내용에서 많은 부분이 중복되기 때문에 혹시 아래 포스팅을 안보신 분들은 확인하고 아래 내용을 보시는 것이 더 이해가 쉬울 것 같습니다. 2017/06/08 - python RoboBrowser login submit 어떤 경우에 Form 을 활용해서 로그인하고 어떤 경우에 Ajax로 로그인해야 하는지는 웹 사이트 코드를 확인해봐야 합니다. Form 방식으로 해도 로그인 안되면 Javascript 코드를 확인해보면서 혹시 Ajax 방식으로 로그인되고 있는지 확인해보면 되겠죠... 더보기
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에서도 찾.. 더보기
pip Installed Package List -> Text File pip로 설치된 여러 패키지들을 Text File로 저장하는 것은 매우 간단한데요. 바로바로 pip freeze > requirements.txt requirements.txt를 열어보면 아래와 같은 형식으로 되어있어요. 요 requirements.txt 파일을 가지고 다른 곳에서 한 번에 설치하는 것은 pip install -r requirements.txt 라고 하시면 됩니다. 아래와 같이 설치가 됩니다. 여러 모로 virtualenv랑 빠질 수 없는 pip 같아요 !! 더보기
Fabric - get branch name Fabric에서 내부 변수로 git branch 이름을 받아오는 것은 아래와 같이 합니다. git_branch = local('git rev-parse --abbrev-ref HEAD', capture=True) local 함수가 기본적으로 capture=False로 작동하는데 True로 변경하면 값을 가져올 수 있습니다. http://docs.fabfile.org/en/1.13/api/core/operations.html 더보기
Html parsing - beautifulsoup4 (child element) 이전 글 :) 2016/08/20 - [Python/libraries] - Html parsing - beautifulsoup4 (install)2016/08/21 - [Python/libraries] - Html parsing - beautifulsoup4 (find_all image src) 이번에는 특정 element의 child element의 값을 얻는 과정을 간단하게 작성해두려고 합니다. 먼저 사용하려는 웹 소스는 제 블로그이구요. http://ngee.tistory.com 현재 여러분은 이 글을 읽고 있다면 접속하신 상태겠군요 !!!아무튼 왼쪽에 카테고리가 보이는데 이걸 파싱해보겠습니다. 소스를 보니 하위에 li로 구성되어있네요. (빨간색으로 표시된 부분) 이렇게 해보려고 합니다. 1. 를 .. 더보기
Html parsing - beautifulsoup4 (find_all image src) 이전 글 :) 2016/08/20 - [Python/libraries] - Html parsing - beautifulsoup4 (install) 이번에는 간단한 예제로 Beautifulsoup4 에서 제공되는 find_all을 알아보도록 하겠습니다 !!! find_all 이라는 함수는 이름에서도 알 수 있듯이 동일한 것을 모두 찾아주는 함수입니다. 자세한 설명은 https://www.crummy.com/software/BeautifulSoup/bs4/doc/#find-all 을 참고하세요 :) https://www.crummy.com/software/BeautifulSoup/bs4/doc/#find-all 실제 웹 페이지를 통해서 한 번 find_all이 어떤 역할을 할 수 있는지 알아보아요. 만만한건.. 더보기
Html parsing - beautifulsoup4 (install) 살다보면 하기 싫은 Html parsing도 해야 하는 날이 있는거죠 :) 아주 예전에 beautifulsoup을 통해서 Html parsing을 했던 적이 있습니다. 오늘 다시 설치하려고 찾아보니 버전 4가 나왔더라구요. 그리고 이전 보다는 수월하게 Parsing이 가능해진 것 같습니다. 암튼 Python 으로 Html Parsing을 처리해야 하는 분들은 4 버전으로 하는게 좋을 것 같아요 !!! pip 로 검색해보면 아래와 같습니다. pip install beautifulsoup4 위 명령어로 설치하실 수 있습니다. 뒤에 꼭 4를 붙여서 설치하세요 !! 안그럼 3버전이 설치되니깐요!! 아래 사이트에 들어가면 좋은 예제 및 설명이 되어있어요!! 참고하시길 !! https://www.crummy.com.. 더보기
MariaDB console 에서 ctrl + c 누르면 MariaDB console 에서 ctrl + c 누르면 위 사진 처럼 Bye 해주자나요. 이런거에 기분 좋아지는 하루입니다 ;;; 하지만 제가 아끼는 python console에서는 ctrl + c 누르면 제대로 누르라고 알려주죠. 빠져 나가는 건 ctrl + d 이니깐요. 오.. 그러고 보니깐 bash 나 zsh에서 ctrl + d 누르면 logout 해버리네요. 그동안 exit 겁나게 쳤는데 아휴. 어휴. 아휴. 더보기
MariaDB - 데이터베이스 재시작 실패 (안될 때) MariaDB 재시작은 ubuntu 기준으로 service mysql restart 하면 됩니다. 그런데 여러 가지 이유로 재시작이 안될 때가 있는데요. 그 중 하나는 bind address를 제대로 작성하지 않은 경우입니다. 아래와 같은 로그를 볼 수 있는데요. ERROR로 Bind address가 잘 못되지 않았냐고, 포트 번호가 3306으로 실행되고 있냐고 물어보내요. 위 서버는 10.0.0.103 주소를 사용하고 있는데. 10.0.0.104로 bind address를 적어줘서 그렇습니다. /etc/mysql/my.cnf 를 vi로 열어서 아래와 같이 제대로 ip address를 입력합니다. service mysql restart 하면 정상적으로 재시작 됩니다. :) 더보기
MariaDB Column Drop, Delete 이번에는 MariaDB를 사용해야 하는데요. 많이 쓰이는 SQL 정리도 할 겸. 몇 가지 포스팅을 작성해두려구요 . 이미 많은 블로그에서 정리가 되어 있고, 공식 홈페이지나 SQL 문서를 보셔도 됩니다. MariaDB 홈페이지 : https://mariadb.org/ MariaDB Doc : https://mariadb.com/kb/en/ W3C School SQL : http://www.w3schools.com/sql/ 이번에는 기존 테이블에 존재하는 컬럼을 삭제하는 내용입니다. 아래 그림 처럼 데이터베이스 testdb 라는 곳에 userinfo 라는 테이블이 존재한다고 가정하겠습니다. 총 3개의 컬럼이 존재하는데요. uid, username, age입니다. 여기서 age 컬럼을 삭제하기 위해서 아래와.. 더보기