본문 바로가기

Python File Read : UnicodeDecodeError: 'utf-8' codec can't decode byte ... 파이썬에서 파일을 읽어서 출력해보면 깨지거나, UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb1 in position 0: invalid start byte 같은 에러가 발생할 때가 있죠. 파일이 utf-8로 안되어 있는 경우에는 아래와 같이 file을 open할 때 encoding 값을 같이 전달해주면 해결 가능합니다. with open('../file/path...', 'r', encoding='utf-8') as f: 여기서 encoding 값을 utf-8로 변경해도 한글 안나오는 경우에는 해당 파일이 euc-kr로 인코딩 되어 있을 수 있습니다. 주로 행정기관에서 생성하는 문서들이나 파일들이 euc-kr로 되어 있는 경우가 있죠. 그럴 때는 eu.. 더보기
파이썬 크롤링 005 - 쇼핑몰 상품정보 (with selenium) / 데이터수집 자동화 앞선 포스팅에서 파이썬 코드를 통한 크롤링 기본적인 내용을 한 번 정리해봤습니다. 너무너무너무 단순했죠? 이번에는 조금 다른 방법으로 크롤링을 해보려고 합니다. 바로 Selenium 라이브러리를 통해서 크롤링 하는 것인데요. 아래서 조금 더 자세하게 설명해드리겠습니다. 크롤링에 대한 기본적인 내용을 보시려면 아래 링크로 걸어드리는 4개 포스팅을 보시면 조금 감을 잡을 수 있지 않을까? 라고 생각합니다. 2020/04/19 - 파이썬 크롤링 001 - 구성요소, 구현방법 2020/04/26 - 파이썬 크롤링 002 - 크롤러 구현 2020/05/03 - 파이썬 크롤링 003 - 파서 구현 2020/05/05 - 파이썬 크롤링 004 - 파싱 결과 저장 기존에 파이썬 requests 라이브러리를 활용해서 간.. 더보기
파이썬 크롤링 004 - 파싱 결과 저장 / 데이터수집 자동화 정말 기본적인 크롤링 구현을 보여드리고 있습니다. 앞선 포스팅 3개에서 이어지는 포스팅이고요. 파이썬을 활용한 크롤링에 대해서 궁금하신 분들은 001부터 봐주시면 더 이해가 쉽습니다. 아래 링크로 달아둘게요. 2020/04/19 - 파이썬 크롤링 001 - 구성요소, 구현방법 2020/04/26 - 파이썬 크롤링 002 - 크롤러 구현 2020/05/03 - 파이썬 크롤링 003 - 파서 구현 003에서 작성한 코드를 일부 수정했습니다. 일단 전체는 이렇게 생겼고요. 추가된 부분만 설명해볼게요. import requests from bs4 import BeautifulSoup crawling_target_urls = [ 'https://finance.naver.com/item/main.nhn?code=0.. 더보기
파이썬 크롤링 003 - 파서 구현 / 데이터수집 자동화 벌써 3번째 글이네요. 앞에 001, 002 글에서 이어지는 글이라서 관심있는 분들은 한 번 읽고 이번 글을 읽으시면 더 이해가 쉬울 것 같습니다. 아래 링크로 달아둘게요. 2020/04/19 - 파이썬 크롤링 001 - 구성요소, 구현방법 2020/04/26 - 파이썬 크롤링 002 - 크롤러 구현 이번 포스팅은 제목에도 나와있지만 파서를 구현하는 내용입니다. 정확하게는 멋진 라이브러리를 사용해서 크롤링한 데이터에서 원하는 내용만 뽑아내보는 것이죠. 002 포스팅 예제에서 주식 정보가 나와있는 사이트를 예로 들었는데 이번 포스팅에서도 이어서 사용해봅니다. 위 그림에서 오른쪽에 박스 그려둔 곳 보이시나요? 저곳에 있는 정보를 파싱하는 대상으로 설정해보죠. 그렇다면 아래와 같은 코드로 가능합니다. 코드를 .. 더보기
파이썬 크롤링 002 - 크롤러 구현 / 데이터수집 자동화 이전 포스팅에서 파이썬 크롤링 001 - 구성요소, 구현방법에 대해서 이야기 했습니다. 이어지는 포스팅이니까 혹시 1번을 안보신 분들은 보고 오시면 더 쉽게 이해되지 않을까 싶습니다. 이번 포스팅에서는 크롤러를 구현해봅니다. 이게 크롤러가 끝이야? 장난해? 라고 하실 수 있겠습니다. 저는 비개발자 분들이 부르는 크롤링은 사실 크롤링과 파싱을 합친 개념이라고 보거든요. 그래서 원하시는 결과를 얻으려면 파싱까지도 하셔야 하는데 이번 포스팅에서는 크롤링만 해보도록 하겠습니다. 어떤 예제가 좋을까? 고민을 했는데 주식쪽으로 예제를 만들어봤습니다. 주식을 투자하시다보면 회사들의 정보를 찾아보는 경우가 많죠. 간단하게는 요약정보부터 조금 더 자세하게는 재무제표까지 들여다 보는 것은 기본이라고 하죠. 이런 가정을 해.. 더보기
파이썬 크롤링 001 - 구성요소, 구현방법 / 데이터수집 자동화 안녕하세요 ! 오랜만에 정말 오랜만에 잡다한 기술 내용으로 포스팅을 하네요. 이번에 조금 길게 정리해보고 싶은 주제는 크롤링입니다. 크롤링이 꼭 개발자의 영역은 아닌것 같습니다. 누구나 개발할 수 있는 영역이라 생각하고 복잡한 내용은 조금 공부하면 충분히 할 수 있는 부분이라고 생각됩니다. 첫 번째 포스팅은 구현 방법을 정리하는 정도로 마치고 두번째, 세번째 이어가면서 실제로 어떻게 크롤링 프로그램을 구현하는지 더 할 수 있으면 수집한 데이터를 데이터베이스에 저장하고 관리하는 내용까지 정리해보려고 합니다. 이 포스팅을 보고 계시다면 당연히 검색으로 들어오셨을 확률이 매우 높죠. 검색어에는 '크롤링 (crawling)' 이 포함되었을 확률도 매우 높다고 생각됩니다. 따라서 크롤링이 뭐야? 는 넘어가도 되겠.. 더보기
python deep copy 파이썬 딥카피 하는 방법은 아래와 같이 간단합니다. import copy new_list = copy.deepcopy(old_list) deepcopy 테스트를 위해서 아래 코드를 보시죠. import copy old_list = [1,2,3,4] print "old_list: {0}, old_list_hex: {1}".format(old_list, hex(id(old_list))) new_list = old_list print "new_list: {0}, new_list_hex: {1}".format(new_list, hex(id(new_list))) new_list[0] = 100000 print "new_list: {0}, new_list_hex: {1}".format(new_list, hex(id.. 더보기
파이썬 - 모든 엘리먼트의 True 체크 (list, tuple, etc) Python all(), any() * Python Standard Library > Built-in Functions > all() https://docs.python.org/3/library/functions.html#all 내장함수 all은 모든 엘리먼트가 True인지 체크해서 모두가 True이면 True를 리턴하고 하나라도 False가 있으면 False를 리턴해주는 함수입니다. 엘리먼트가 없으면 (비어있으면) True를 돌려주네요. all은 인자로 iterable를 받는데 iterable의 설명은 아래 링크를 참고하세요. 간단하게 말해서 반복 가능한 객체를 의미합니다. 예를 들어서 list나 tuple 같은 것들을 말합니다. https://docs.python.org/3/glossary.html#.. 더보기
python abs (파이썬 절대값) PYTHON 절대값 (Absolute Value) * Python Standard Library > Built-in Functions > abs() https://docs.python.org/3/library/functions.html#abs 파이썬에서 절대값을 얻기 위해서 abs() 함수를 사용합니다. 사용 테스트를 간단한 예제로 확인해보세요. abs 함수는 정수와 실수를 입력하면 그대로 정수의 절대값, 실수의 절대값으로 돌려줍니다. number1, 2, 4, 5를 보시면 알 수 있습니다. 다만 복소수를 입력하면 값의 크기로 돌려줍니다. number 3, 6을 보시면 알 수 있습니다. 더보기
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.. 더보기
파이썬 - 날짜 구하기 (오늘, 이번달 1일, 날짜 차이) 최근에 개발한 것 중에 매일 매일 로그를 잘라서 처리하고 공유하는 스크립트가 있습니다. 이걸 하려다 보니깐 날짜와 관련된 datetime 라이브러리를 많이 사용하게 되네요. 간단하게 몇 가지만 정리해보려고 하는데요. 1. 오늘 날짜 2. 이번달 1일 (예를 들어서 2월 5일에 실행하면 2월 1일을 돌려받는 것) 3. 이번달 1일에서 오늘까지 차이 값 일단 코드는 아래와 같습니다. getCurrentUnixTime은 현재 시간의 unix time을 돌려주는 것이고요. getToday는 오늘 날짜를 돌려주는 것입니다. getFirstDayOfTheMonth 는 이번 달 1일을 돌려주는 함수고요. getDateInterval은 오늘이랑 이번달 1일과의 차이를 돌려주는 함수입니다. 실행결과는 아래와 같고요. 더보기
파이썬 유닉스 시간(Unix Time) 구하기 파이썬에서 유닉스 시간 구하는 방법에 대해서 정리해둡니다. 일단 유닉스 시간은 여기 위키문서를 참고하세요. 파이썬에서 기본적으로 제공되는 datetime 라이브러리를 활용하면 유닉스 시간을 쉽게 구할 수 있어요. 아래 코드는 유닉스 시간을 구하는 예제를 나타냅니다. 먼저 getCurrentUnixTime 함수는 time.time()이라는 결과를 리턴하는데요.time.time()에 대한 자세한 설명은 여기 문서를 확인해보세요. 간단히 말해서 현재 시간에 대한 epoch time을 반환해주는 함수인데요. epoch time == unix time 이기 때문에현재 시간에 대한 유닉스시간 값을 손쉽게 얻을 수 있는 방법입니다. getTodayUnixTime은int(datetime.date.today().srtf.. 더보기
파이썬 책이 많아졌네요 in 교보 얼마전에 교보문고에 가서 책을 구경했는데요. 파이썬 책이 참 많아 졌다고 느꼈어요. 아마도 머신러닝이 많은 관심을 받아서 자연스럽게 파이썬 관련 책들이 늘어난게 아닐까요? 아무튼 교보에서 파이썬 관련된 책들을 몇 권 찍어봤어요. 점프투파이썬도 있더라고요 !! 제가 처음 파이썬을 공부할 때 점프투파이썬을 웹으로 봤었거든요. 제일 깔끔한 것 같아요. 파이썬을 주로 사용하고 있는 저는 파이썬 책이 늘어난게 기쁘더라고요. 앞으로 국내에서 많은 파이썬 개발자들이 늘어나길 기대합니다. :-) 더보기
atom installed packages / themes 제가 사용하고 있는 atom packages를 작성해두려고 합니다. 언제 또 개발 환경이 변경되고 atom을 다시 설치해야 하는 상황이 발생할지 몰라서요. atom-beautify 는 여러 파일의 indent를 맞추는데 사용하고 있어요. atom-ternjs 는 아마도 javascript autocomplete 를 위해서 사용하고요. autoclose-html 은 html 작성할 때 close tag를 제공하기 때문에 쓰고 있어요. autocomplete-python 은 이름 그대로 입니다 :) file-icons 는 atom의 밋밋한 파일 표현을 진짜 이쁘게 바꿔줘요. 꽤 맘에 들어요. multi-cursor 는 여러 줄을 한 번에 편집할 수 있어서 좋아요. highlight-selected 는 선택한.. 더보기
Django Rest Sample App 많은 블로그나 웹 문서에서 다루고 있는 내용이라서저는 참고용 소스와 스샷으로 대신합니다 :) 간단하게 물건에 대해 저장 / 관리할 수 있는 앱이라고 생각하시면 되겠습니다.물론물론 당연히 실제로 이렇게 물건들이 관리되진 않겠죠 !! Django + REST 방식이 어떤 소스로 작동되는가 정도를 공유하는게 목표입니다. 1. 구현된 소스를 작동시키고 localhost:8000/product_a/management 로 접근하면 아래와 같은 화면이 나옵니다. Django REST Framework에서 기본적으로 제공하는 화면인데요.실제 get / post 명령어가 여기에서 가능하도록 UI가 구성되어 있습니다. 접속하면 get이 실행되어서 화면에 출력되고요. 하단에 있는 form을 통해서 post 메소드를 실행할 .. 더보기
django rest framework serializer.is_valid() false, errors print 간단하게 기록용 !! django rest framework에서 views.py 단에서 주로 사용자의 request에 대해 serializer 연결을 합니다. 특히 create() 함수 그러니깐 post 요청, 다시 말해서 사용자가 먼가를 생성하는 요청을 한 경우에 사용자가 입력한 값이 적절한지 serializer에 is_valid() 함수를 통해 검토하고 save 해야 합니다 !! 말로 하니깐 알아보기가 불편하네요. 역시 코드가 이해하기 편한 것 같아요. 아무튼 views.py 를 잠시 살펴보시죠. @permission_classes((IsAdminUser, ))class TestDataViewSet(viewsets.ModelViewSet): queryset = TestData.objects.all().. 더보기