4월, 2018의 게시물 표시

파이썬을 이용하여 웹 크롤러 만들기 #2 - BeautifulSoup4을 활용하여 크롤링하기

이미지
안녕하세요. 남산돈가스입니다. 지난 포스팅에 이어 오늘은 두번째 순서인 BeautifulSoup4를 활용하여 웹 크롤링을 해보도록 하겠습니다. 우선, BeautifulSoup 이라는 것이 어떤 건지 간단히 말씀드리자면, html코드를 python이라는 언어가 이해할 수 있는 객체 구조로 변환해주는 대표적인 html Parsing 라이브러리입니다. 웹크롤링을 한다면 필수적인 라이브러리로 파이썬 웹크롤링 서적에서도 소개될 만큼 검증 된 라이브러리입니다. 이번 포스팅에선 대표적으로 requests 와 BeautifulSoup4 라이브러리를 이용해서 크롤링을 해보려고 합니다. 먼저 위에서 말씀드린 라이브러리들을 install 해보겠습니다. 터미널에 pip install beautifulsoup4 를 입력하여 beautifulSoup 라이브러리를 설치합니다. $ pip install beautifulsoup4 Collecting beautifulsoup4 Downloading https://files.pythonhosted.org/packages/9e/d4/10f46e5cfac773e22707237bfcd51bbffeaf0a576b0a847ec7ab15bd7ace/beautifulsoup4-4.6.0-py3-none-any.whl (86kB) 100% | ████████████████████████████████ | 92kB 445kB/s Installing collected packages: beautifulsoup4 Successfully installed beautifulsoup4-4.6.0 다음으로 requests 라이브러리를 install 합니다. $ pip install requests Requirement already satisfied: requests in /Users/gimseongsin/Library/Python/3.6/lib/python/site-packages 제 경우

Angular2+ 에서 넘치는 글자 말줄임표(...) 처리하기

Angular2+ 에서 말줄임(...) 처리는 크게 세 가지로 할 수 있습니다. 1. Pipe 로 템플릿 단에서 처리 2. 스크립트 처리 3. CSS 로 처리 1줄일 경우, 2줄 이상일 경우 다른 방법이 쓰입니다. 이 세 가지에 대해 간단한 핵심 소스를 공유 드립니다. 1. Pipe *.ts str:string = '일이삼사오육칠팔구십' *.html <div> {{ (str.length>6)? (str | slice:0:6)+'...':(str) }} </div> 결과화면 일이삼사오육... 2. 스크립트 사용 *.ts var limitLen = 6; if (str.length > length) {      str = str.substr(0, limitLen) + '...'; } *.html <div> {{ str }} </div> 결과화면 일이삼사오육... *jquery ellipsis 사용 See the Pen jQuery ellipsis by jaeheekim ( @jaehee ) on CodePen . 2. CSS 사용 1줄일 경우 div {    white-space:nowarp; /* 줄바꿈 막음*/    text-overflow:ellipsis; /* ... 로 보이게 */    overflow:hidden; } 2줄 이상일 경우 div {      font-size:1em;      overflow:hidden;      text-overflow:ellipsis;      line-height:1.5;      height:3em;  /* line-height의 두 배 */      display:-webkit-box;      -webkit-line-clamp:2; /* 나타낼 글자 라인 수 */      -webkit-box-o

[AWS] SES 를 활용한 이메일 발송 테스트

이미지
지난 포스팅에서는 AWS Workmail 설정을 통한 이메일 사용 방법에 대해 알아보았습니다. 이번에는 API 를 통한 메일 발송 자동화 처리를 위한 SES (Simple Email Service) 에 대해 알아 보겠습니다. AWS 콘솔에서 SES 메뉴로 이동합니다. Work 메일과 마찬가지로 서울 리전은 지원하지 않습니다. “Email Address” TAB 으로 이동하여 메일 발송에 사용할 이메일 주소를 설정합니다. 아마존에서 메일 인증을 위한 메일을 발송 하며 확인 전 까지는 인증대기 상태 입니다. 등록한 메일 계정을 확인해 보면 아래와 같이 메일이 수령된 것을 확인할 수 있습니다 링크를 클릭하면  인증이 완료 됩니다. 콘솔 창 에서 인증 완료 상태를 확인 할 수 있습니다. 이제 해당 메일 계정을 통해 메일 발송이 가능합니다. 계정 선택 후 “Send a Test Email” 을 선택 합니다. 받을 메일 주소 , 제목, 내용 을 입력하고  “Send Test Email” 버튼을 선택 합니다. 메일이 발송 되지 않고 에러가 발생 합니다. 처음 SES 서비스를 사용하면 샌드박스 환경 에서 실행이 되므로  받는사람 메일 계정도 인증이 되어야만 메일 발송이 가능합니다. 받는사람 메일도 추가로 인증을 진행 합니다. 이제 다시 메일을 발송해 보겠습니다. 받은 편지함에 메일이 정상적으로 수신 되었습니다. 도메인에 amazonses.com  이 표시 됩니다. 메일 발송이 완료 되면 “Sending Statistics” 메뉴에서 발송 통계 정보 확인이 가능 합니다. 1개 메일이 정상 발송 되었습니다. 다음 포스팅에서는  받는사람 메일 인증을 받지않고 메일을 발송 하기 위해 샌드박스 환경을 벗어나는 방법에 대해 확인해 보도록 하겠습니다.

AWS Elastic BeanStalk로 Web Application 만들기 연습 예제

이미지
“AWS Elastic BeanStalk를 사용하면 가장빠르고 간단하게 웹 어플리케이션 제작할 수 있습니다.” AWS Elastice BeanStalk(이하 EB) 소개 페이지를 방문하면 위와 같이 이야기 하는데요, 여기서는 간단하게 샘플 어플리케이션을 만들어 보면서 어플리케이션 제작에 친숙해 지려고 합니다. 먼저 AWS EB는 어플리케이션을 생성하고 어플리케이션 하위에 개발, 테스트, 프로덕트 등 운영환경에 따른 환경을 구성할 수 있습니다. 또한 웹어클리케이션의 다양한 옵션을 지정할 수 있으며, 모니터링, Auto Scaling 을 지정할 수 있으며, 또한 정기적으로 앱을 빌드하도록 설정할 수 있습니다. 여기서는 10분만에  간단한 Sample Web Application을 제작해보도록 하겠습니다. Application 생성하기 AWS EB를 사용하기 위해서는 AWS 콘솔에서 https://ap-northeast-2.console.aws.amazon.com/elasticbeanstalk 방문하여 관련 구성을 지정할 수 있습니다. 1. 중간에 “Get started” 버튼을 클릭하여 Applicaton을 생성합니다. 2. 여기서는 테스트를 위해 Application name에 “Test-App” 을 입력하고, Platform에 “Tomcat”을 선택하고, Application code는 샘플로서 바로 확인하기 위해 일단 “Sample application”을 지정합니다. *Platform의 목록을 보면 Ruby, Go, Java, Phython, Node.js 등 다양한 언어 혹은 웹서버를 지원하는 것을 확인할 수 있습니다. *Application code에서 별도의 .zip 혹은.war을 등록하여 기존에 개발로 어플리케이션을 등록할 수 있습니다. *Configure more options 를 클릭하여 EB에서 지원하는 다양한 기능을 추가 로 설정할 수 있습니다. 여기서는 기본설정으로 샘플 어플리케이션을 생성할 것입니다. 3

Android에서 JS를 통해 WebView와 통신하기

안녕하세요. 첫 포스팅을 게재하는 명동콜링입니다. 첫 포스팅인 만큼 간단하게 하이브리드 앱 개발 할 때 필수적인 요소인 Javascript를 통해 Web에서 App으로 데이터를 보내는 방법을 알려드리고자 합니다. 하이브리드 앱도 앱이기 때문에 웹 페이지로 구성이 되어있지만 앱의 기능을 어느 정도는 사용하게 됩니다. 그렇기 때문에 앱에서는 웹에서 어떠한 신호를 받기 위한 로직이 필요했으며, 그에 따라 생겨난 것이 Javascript를 통해 데이터를 주고받을 수 있도록 한, Android Bridge Interface 입니다. 과거에 JS를 통해 교류할 수 없었을 때에는 앱 내에서만 사용할 Scheme을 가지고 URL형식으로 호출을 하게 되었다면, 지금은 완벽하게 Javascript문법을 통해 앱의 API를 호출 할 수 있도록 도와주고 있습니다. 그럼 이제 초기 셋팅을 해보도록 할텐데, 전반적인 프로세스는 다음과 같습니다. Android WebView에서 Javascript Interface를 설정한다. Web에서는 WebView에서 설정된 Interface를 호출한다. 항목이 두 가지 밖에 없는 만큼 참 구현도 간단한데, 예시로 웹에서 버튼을 누르면 현재의 웹이 아닌 다른 브라우저에서 페이지가 열리도록 하는 것을 구현해 보도록 하겠습니다. 먼저 WebView에서 Javascript Interface를 설정하는 방식에 대해 확인해 봅시다. 1 2 3 4 5 public   abstract   class  JavascriptInterface{      public   static   final   String  JS_INTERFACE  =   "webInterface" ;      public   abstract   void  loadPage( String  url); } Colored by Color Scripter cs  위의 클래스는 기본 클래스가

파이썬을 이용하여 웹 크롤러 만들기 #1 - Python 설치 및 환경 설정

안녕하세요. 남산돈가스 입니다. 얼마 전 한국정보기술연구원 재직자교육을 통해 " 파이썬으로 웹 크롤러 만들기" 교육을 수강했습니다. 내용이 어렵지 않아 누구든지 쉽게 따라할 수 있어서 저는 내용들을 상기 시킬 겸, 내용을 소개드릴 겸 해서 이 포스팅을 시작하게 되었습니다. 이번 포스팅은 2회에 걸쳐서 진행될 예정이며, 회차 별 내용은 다음과 같습니다. #1 - Python 설치 및 환경 설정 #2 - BeautifulSoup4을 활용하여 크롤링하기 그렇다면 1회차인 Python 설치 및 환경 설정 부터 시작하도록 하겠습니다. 현재 저는 맥북을 사용 중이므로, mac OS 기준으로 설명 드리겠습니다. 먼저 Python을 설치하기 전 mac os 에서 패키지 관리를 할 수 있는 프로그램으로 "homebrew"라는 패키지 관리도구가 있습니다.  gimseongsin @gimseongsin - ui - MacBook - Pro :~ :> / usr / bin / ruby - e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" 위 명령어를 실행하면 homebrew를 다운 받을 수 있습니다. homebrew 패키지가 설치되었는지 확인하시려면, /usr/local/bin 폴더로 이동하여 ls 명령어를 이용하여 homebrew가 있는 지 확인해주시면 됩니다. homebrew가 설치되었는지도 확인을 하셨다면, 이제 본격적으로 python을 설치해보겠습니다. 방법은 아주 간단합니다. gimseongsin @gimseongsin - ui - MacBook - Pro :~ :> brew install python3 See : https: / / docs.brew.sh / Homebrew - and - Python == > Summary

[AWS] AWS Workmail 계정 사용법

이미지
AWS 상에서 관리되고 있는 도메인이 있다면 손쉽게 이메일 서비스 그룹을 생성하여 메일 계정을 사용할 수 있습니다. 1. 콘솔화면에서 Workmail 서비스를 선택 합니다. 아직 서울 리전은 서비스가 지원되지 않습니다. 2. 원하는 리전을 선택 후 Add organization 을 선택합니다. 3. Quick setup 을 선택하여 간단하게 조직 구성을 진행 합니다. 4.  Organization name 을 입력하고 “Create” 를 선택합니다 . Web Application URL 을 Workmal 서비스 접속을 위한 도메인 입니다. 도메인 이름을 메모해 놓도록 합니다. 5. 도메인 설정을 진행 합니다. “Add domain” 버튼을 선택하고  Default 도메인 이외에 추가로 사용할 도메인 주소를 추가 합니다. 도메인이 추가되면 메일 서비스 사용을 위해서 DNS 서버에 아래와 같이 TXT, MX, CNAME 레코드를 추가합니다. 레코드 추가가 정상적으로 완료되면 해당 도메인을 사용하는 메일계정 새성이 가능합니다. 6. 메일 계정을 생성 합니다. Administrator 계정은 시스템에 예약되어 있습니다. “Create User” 버튼을 통해  메일 계정을 신규로 생성 합니다. User Name 과 Displayname 은 필수 항목 입니다. 항목 입력 후 “Next Step” 을 선택합니다. 입력한 User Name  값이 자동으로 Email address 로 입력 됩니다. 메일에 사용한 도메인 주소를 선택한 후 패스워드를 설정하면 메일 계정 생성이 완료 됩니다. 7. 웹 메일 에 접속해서 계정으로 로그인 합니다. 4번 항목에서 메모해둔 Web Application URL 에 접속해 봅니다. 계정 생성이 정상적으로 마무리 되면  아래와 같이 메일 서비스 화면이 표출됩니다. Workmail 설정이 완료 되었습니다.

Spring Boot로 REST API 만들기

이미지
스프링 부트는 원래 자바로 만드는 마이크로서비스를 만들기 위한 프레임워크입니다. 여기서는 스프링부트를 사용하여 간단한 REST API를 만드는 방법을 소개하고자 합니다.   여기서는 다음의 내용을 다루고자 합니다. spring 개발환경 구축 spring framework5 와 spring boot를 활용한 RESTful 서비스 개발   개발환경 스프링 개발을 위해 일반적으로 아래 개발도구를 사용합니다. JDK 1.8 –> http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html Spring Tool Suite(STS) 3.8.2 –> http://spring.io/tools/sts/all Maven 3.3.1 –> https://maven.apache.org/download.cgi   하지만 개발도구로 STS 대신에 InteliJ의 idea나 이클립스 다른 IDE를 사용할 수 있습니다. (저는InteliJ의 idea를 사용합니다.) 또한 maven 대신에 gradle을 사용해도 무방합니다. 그리고 사용할 스프링 버전은 아래의 것을 사용할 것입니다. Spring Framework 5.0.0 RC1 –> https://projects.spring.io/spring-framework/ Spring Boot 2.0.0 M1 –> https://projects.spring.io/spring-boot/   스프링 부트로 RESTful API서비스 만들기 스프링 부트는 앞서 말했듯이 마이크로 서비스를 빠르고 쉽게 만들수 프레임워크 입니다. 다시 말해 빠르고 쉽게 만들수 있다는 것은 기본코드와 환경설정에 드는 노력을 상당히 줄이고 기본 설정값으로 애플리케이션을 쉽게 만들수 있습니다. 스프링 부트는 maven에서의 POM 파일과  같은 빌드 파일을 자동 생성합니다. 스프링 부트는 기존에 스프링에서 사용하는 xml 설정 파일을 없앴으며, 실행가능한 jar형태의

아이프렌즈펫 개린이 캣초딩 콘테스트

이미지
우리집 막둥이🐾 사진을 아이프렌즈펫 앱에 올려주세요 아이프렌즈펫이 어린이날 선물을 쏩니다~!🎈🎁 ✔️ 참여 기간 4월 16일 (월) 9:00 ~ 4월 30일 (월) ✔️ 참여 방법 1️⃣ 아이프렌즈펫 앱 다운로드 2️⃣ 초간단 회원 가입 3️⃣ 사진 올리기 📸 (홈 화면 상단 배너 클릭 또는 추억주제 + 버튼 눌러 사진 올리기) ✔️ 당첨자 발표 5월 5일 (토) ✔️ 선정 기준 가장 많은 좋아요💕를 받은 사진 (당첨 팁 확인~) ✔️ 경품 [1등] 2명 카메라 내장 자동 급식기 [2등] 3명 노즈워크 헬로킹 장난감 [3등] 5명 자동급식 BALL 장난감 [활동상] 포토랜드 아크릴 액자 1명 [스토리상] 히오니 젤네일 1명 이벤트 자세히 보기 (응모하기) https://www.ifriendspet.com/app/childrenday_contest/blog.html