All

Programing Language/Python

requests, bs4, selenium4을 통해 웹 페이지 데이터 크롤링하기

일반적으로 인터넷을 이용하면서 웹에 있는 데이터를 가공하거나 사용해야 하는 경우가 빈번 합니다. 특히 사이트에서 어떤 가격에 대한 데이터를 받아 엑셀로 저장하여 정리하여야 한다던가, 여러 페이지들을 돌면서 최저가 아이템을 구입하길 원하는가 등 여러 니즈들이 있을 수 있는데, 이때 주로 requests, bs4, selenium4을 이용하여 프로그램을 개발하여 해결합니다. 이번에는 파이썬을 통해 해당 니즈들을 해결하기 위해 동적인 웹 페이지에 대한 데이터를 크롤링하는 방법에 대해서 알아보고자 합니다. - 웹 데이터 크롤링이란 프로그램이 웹사이트를 정기적으로 돌면서 정보를 추출하는 것을 의미 합니다. 동적 페이지 vs 정적 페이지 그리고 데이터 수집 정적, 동적 페이지라는 말이 생소하게 들릴 수 있는데 간단..

Programing Language/Python

코드 포맷터의 의미와 파이참에서 Black으로 코드 스타일 자동화 하기

코드 포맷터 코드를 작성하는 방법은 사람마다 다릅니다. 배운 환경이 다를 수도 있고, 사람들이 코드를 봤을 때 느끼는 편함이 사람마다 다를 수도 있기 때문인데요 하지만 다른 사람들과 협업을 할 때 다들 각자의 코드 스타일만을 추구한다면, 다른 사람들이 나의 코드를 읽기에 어려움을 겪을 수 있습니다. 개발자들은 이런 문제점을 해결하기 위해서 고민을 많이 해왔는데요, 이러한 문제점을 해결하기 위해서 코드 포매터를 만들었습니다. 코드 포매터 : 정한 코딩 컨벤션(코드 작성 스타일 규칙)에 따라 코드 스타일을 알아서 정리해 주는 도구를 말합니다. Black Black이란 최근 파이썬 커뮤니티에서 가장 널리 쓰이고 있는 코드 포맷터의 한 종류 입니다. Black : https://black.readthedocs...

FrameWork/Django

settings.py 분리하여 관리하기

Settings.py을 분리한다는 것이 무슨 말이죠? 장고를 사용하다보면 기능 구현을 위해 여러 라이브러리나 모듈, 미들웨어 등을 추가하면서 몸집을 키워나가게 되는데 이 과정에서 settings.py 파일의 크기가 커진 나머지 내가 어떤 것을 추가하였는지 대해 찾기도 어려울 뿐더러, 배포을 할때에는 사용자에게 보여주면 안되는 세부정보들을 제공하지 않기 위해 개발용 세팅과, 배포용 세팅을 따로 둘 필요성이 있습니다. 따라서 이런 이유로 장고 개발자들은 본래 프로젝트를 시작하면 만들어지는 settings.py을 settings 라는 폴더를 만들고 그 안에 common.py, prod.py 등으로 쪼개서 관리하시는 식으로 프로젝트를 관리하고 있습니다. 한문장으로 설명하자면 : 그냥 프로젝트에 사용되는 설정 코..

FrameWork/Django

dumpdata와 loaddata을 통해 DB데이터 추출, 적재하기

이걸 왜 사용하나요? 장고에서 DB을 사용하다 보면, 성능이나 다른 이슈로 인해 다른 DB에 데이터를 옮겨야 하는 상황이 발생하기도 합니다. 이때 dumpdata와 loaddata을 활용한다면 쉽게 DB에서 데이터를 추출하고 적재할 수 있습니다. dumpdata : DB 데이터 추출 dumpdata 명령어를 실행한 뒤 출력되는 데이터를 파일로 추출하는 방식입니다. 해당 명령을 실행하면 dumpdata로 반환되는 값을 data.json 이름의 파일로 보내면서 참고로 data.json 말고 다른 이름으로 변경하여 사용이 가능합니다. python manage.py dumpdata > data.json 특정 장고 앱의 데이터만 저장한다면 dumpdata 뒤에 앱 이름을 입력합니다. python manage.py..

FrameWork/Django

장고(Django) 프레임워크 소개와 프로젝트 생성하기

파이썬은 빅데이터 영역뿐만 아니라 GUI, Web 분야에서도 쉬운 사용법과 직관적인 문법 덕분에 많은 사용자들이 즐겨 사용하고 있는 언어 중 하나이다. 그중 Web 영역에서 파이썬을 사용하려면 프레임워크를 이용하여 프로젝트를 진행하게 된다면 쉽게 웹사이트를 구축하고 운영할 수 있다. 파이썬으로 활용할 수 있는 프레임워크는 Django, Flask, Fastapi.. 등등 많은 종류가 있지만 그중에서도 어느 정도 완성적으로 기능들을 제공하는 Django 프레임워크에 대해 이야기해보고자 한다. 프레임워크 일단 장고에 대해 알아보기 전에 프레임워크가 무엇인지에 대해서 살펴보자. 프레임워크란 "어떠한 목적을 달성하기 위해 복잡하게 적혀 있는 문제를 해결하기 위한 구조"라고 설명하곤 한다. 그리곤 항상 뜨겁게 나..

FrameWork/Django

Forbidden (403) CSRF verification failed 오류 해결하기

상황 Django을 서버에 올려서 배포 한 후에 admin 페이지에서 로그인을 할 때, Http통신에서 Post 메소드를 사용할 때 403 에러를 일으키며 Forbidden (403) CSRF verification failed 로그를 보게 됬다. 해결 Django는 서버가 공격받는 것을 방지하기 위해 CSRF 토큰이 존재하는 이들의 POST요청을 받아드리고, 그 이외는 보안을 위해 권한을 허락하지 않는다고 한다. Django 4.0 이상 부터는 CSRF_TRUSTED_ORIGINS을 이용하여 CSRF 대한 권한을 허락 할 수 있다. CSRF_TRUSTED_ORIGINS = ['stie_address'] https://velog.io/@gene028/%EA%B0%9C%EB%B0%9C%EC%9D%BC%EC..

FrameWork/Flutter

Navigator을 통한 화면 전환과 위젯 필수 매개변수 받기

이번에는 Navigator을 이용한 화면전환과, 위젯에서 필수 매개변수를 받는 방법에 대해서 정리해보고자 한다. Navigator을 이용한 화면전환 플러터에서는 Navigator의 push() 메소드를 통해 화면전환이 가능하다. Navigator.push()에 전환할 페이지를 MaterialPageRoute()에 넣어주면 된다. - main.dart Navigator.push(context, MaterialPageRoute(builder: (context) => FirstScreen())); 다음은 화면 전환의 예제이다. 만약에 전환할 페이지에 매개변수를 넘겨야 한다면, 전환할 페이지의 ()안에 매개변수를 적어서 넘겨주면 된다. - main.dart import 'package:flutter/materi..

FrameWork/Flutter

StatefulWidget와 StatelessWidget 알아보기

이번에는 StatefulWidget와 StatelessWidget에 대해서 정리해보고자 한다. 생명주기 일단 StatefulWidget, StatelessWidget을 논하기전에, 생명주기에 대해서 이해할 필요가 있다. 생명주기란 위젯의 시작점에서 끝점까지 이르는 과정에 대한 주기를 의미한다. 윗 그림에서 왼쪽은 Stateless, 오른쪽은 Stateful 생명주기를 나타낸다. Stateless 일단 Stateless의 과정을 먼저 살펴보자. Stateless는 Constructor과정에서 생성되고, build에서 작업을 진행한다. 여기서 눈여겨 봐야할 점은 Stateless는 라이프사이클안에서 모든 과정, build가 단 한번만 이루어진다는 것이다. Stateful 반면 Stateful은 Constru..

FrameWork/Flutter

Flutter 프로젝트 디렉토리 구조, 위젯 알아보기

이번에는 플러터를 다루기전에 알아두면 좋은 여러가지 기초 지식에 대해서 다뤄보고 그에 대한 내용을 정리하고자 한다. 프로젝트 디렉토리 구성 일단 플러터 프로젝트를 만들게 되면 수많은 디렉토리가 추가가 된다. 이 중에서 우리가 자주 다루는 부분은 lib폴더 안에 있는 main.dart라는 파일이고 나머지 andriod, ios는 우리가 만든 main.dart 라는 파일을 안드로이도나, IOS로 변환 시켜 줄때 어떻게 설정해야 하는지에 대한 부분으로, 그 외의 부분은 따로 설정해주지 않아도 된다. 만약에 웹뷰를 포함한 패키지가 필요할 경우에는 pubspec.yaml에 패키지의 정보가 담기게 되니 이를 참고하자. 위젯 위젯이란 화면에 보이게 하는 모든 요소를 의미한다. 우리는 이제 main.dart에서 코드..

JHeaon
'분류 전체보기' 카테고리의 글 목록 (6 Page)