본문 바로가기

Python

피보나치 with argparse on python | Fibonacci with argparse on python 학창시절 수학시간에 배운 피보나치 수열이다. 기본적인 내용을 다 알겠지만, 개략적으로 본다면1 1 2 3 5 8 13 21 34 .......... 의 형태로 앞 두 수의 합이 다음 수가 되는 것이다.함수 구현은 아래 그림에서 보는 바와 같이 아주 단순하다. 여기서는 피보나치 보다는 argument parse를 보려고 한다. 점점 게을러져서인지, 그냥 코드만 보면 이해가 될 거라고 생각하고 설명을 생략하게 된다....점점.... 매너리즘인가 -_- 모르겠는점은 구글링해보시라~ 더보기
WIFI 비밀번호 알아내기 with python | Cracking WIFI PASSWORD with brute force on python Wifi를 크래킹 하는 도구들은 상당히 많다. 그러나 대부분 유닉스(또는 리눅스) 명령어를 충분히 숙지하여야 이해하는데 무리가 없을 것이다. 이번에는 아주~ 간단(?)히 파이썬을 이용하여 WIFI(무선인터넷) 패스워드를 찾아보려고 한다. 단순 무식한 방법인 brute force 를 이용해서 말이다. brute force는 쉽게 말하면 단순하게 모든 패스워드를 입력해보고 아니면 다음 패스워드, 그래도 아니면 또 다른 패스워드....... 이렇게 일련의 패스워드들을 프로그램이 자동으로 하나씩 대입하여 찾아내는 방법이라고 보면 된다. 각설하고 아래는 저의 컴퓨터 환경(맥을 사용합니다)에서 주변(카페)에서 찾을 수 있는 무선 인터넷을 찾고, 패스워드를 brute force해 보도록 하겠습니다.위는 전체코드이며 .. 더보기
Zip 파일 비밀번호 알아내기 by brute force on python | Unlock Password Protected Zip file using python 간단한 brute force python code 를 만들어 보려고 한다. 압축파일로 흔히 쓰이는 Zip file 형태가 비밀번호로 보호가 되고 있는데 비번을 잊어버렸을 경우 어떻게 할까? 머리를 쥐어 짜서 비번이 생각나기를 학수고대 할 수밖에 없을까? 이럴때 유용하게 심플한 코드를 만들어 해결을 할 수 있다. 아래는 단순한 파이썬 코드이다. 개략적으로 설명을 하자면, 딕셔너리(일반적으로 수 많은 단어들이 들어 있는 파일)파일을 가지고 있다면 그것을 이용하여 zip파일을 컴퓨터가 하나씩 열쇠구멍에 넣어 돌려보게 하는 것이다. 흔히 크래커들은 일반적으로 많이 사용되는 혹은 빈도수가 높고 비밀번호로 유용한 단어들의 리스트를 가지고 프로그램을 돌려 빠른 시간내에 해당 시스템의 비밀번호를 알아낼 수 있다. 여기.. 더보기
파이썬으로 코스피200 종목코드, 회사명 가져오기 | get kospi200 data using python 주식 관련 문의를 주시는 분들이 몇 분 계셔서 간단히 KOSPI200 의 종목코드와 회사명을 네이버에서 가지고 오는 코드를 소개해 보고자 합니다.아래는 포털 사이트 네이버의 증권 섹션입니다. 코스피200 의 데이터를 가지고 오기 위해 관련 정보를 알아야 하기에, 왼쪽의 코스피200 이라고 명기된 부분을 클릭하면 아래와 같은 화면이 나옵니다. 여기에서 아래 그림처럼 된 부분만 따로 확인하기 위해서 이 부분의 주소만을 웹브라우저 주소창에 넣어주면 코스피200 회사들의 당일 주가 데이터들만 나타나게 됩니다. 해당 주소는 http://finance.naver.com/sise/entryJongmok.nhn?&page=1 입니다. 이제 여기서 html 코드를 확인하기 위해 각각의 웹브라우저마다 이름이 다른 속성, .. 더보기
나만의 주식 분석 프로그램을 활용한 4 번째 매매일지 한국의 주식 시장이 이전에 겪어보지 못한 활황을 구가하고 있다. 연일 코스피 지수는 사상 최고치를 경신하고 있으며, 이에 따라 코스닥 시장도 조금씩 최고치를 높여가고 있는 시황이다. 파이썬을 이용해서 주식 분석 프로그램을 만들고 여기에 재무제표 분석을 더하여 종목 선정을 하게 하였다. 새로운 버전으로 버전업을 하니 이전 프로그램보다 매매 타이밍이 잘 맞아 떨어지는 것 같다. 물론 시황 자체가 긍정적인 흐름이라는 것을 간과해서는 안되겠지만 말이다. 새로운 프로그램으로 매매에 임한지 아직 1달이 채 되지 않았다. 그러나 성과는 예상했던 것보다 좋게 나오고 있다. 아래는 지난 4주간의 누적 손익이다. 손실은 적게 수익은 극대화에 입각한 패턴이라 할 수 있겠다. 무엇보다 인간의 탐욕을 최대한 배제하려고 한 결과.. 더보기
나만의 주식 분석 프로그램을 활용한 3 번째 매매일지 변동성이 큰 한 주의 시황이었다. 주 초반에는 조정을 거치는 반면, 주 후반에는 다시 상승을 하여, 이 글을 쓰는 현재 코스피 기준 사상 최고가를 경신한 한주로 마무리가 되었다. 나의 수익 일지 또한 등락을 거듭하였으나, 적게나마 수익을 내면서 한 주를 마무리 하였다. 프로그램을 조금씩 수정을 더해 갈 수록 취합하는 데이터의 양이 방대해지고 있고, 그에 따른 알고리즘 또한 복잡해지고 있다. 앞으로 해야할 일은 상관관계에 의한 변동성 예측과 포트폴리오 비율 구성을 조절해 줄 수 있는 머신러닝 구현이다. 더보기
Delete redundant rows in pandas dataframe import modulesimport pandas as pd Create dataframe with duplicatesraw_data = {'first_name': ['Jason', 'Jason', 'Tina', 'Jake', 'Amy'], 'last_name': ['Miller', 'Miller', 'Ali', 'Milner', 'Cooze'], 'age': [42, 42, 36, 24, 73], 'preTestScore': [4, 4, 31, 2, 3], 'postTestScore': [25, 25, 57, 62, 70]} df = pd.DataFrame(raw_data, columns = ['first_name', 'last_name', 'age', 'preTestScore', 'postTestSc.. 더보기
실시간 내 주가를 알려주는 Python Code 이번에는 실시간 주식 데이터를 가져와서 시시각각 동향을 출력하게 하려고 한다. 그 후에는 내가 보유한 종목의 주가 흐름을 계속 추적하고, 더 나아가 컴퓨터가 보유종목의 주가를 계속 오디오로 알려주게 하는데까지 알아보려고 한다. 포털사이트 다음의 증권에 올라오는 종목 시세를 참고하였다. 옛날 같으면 포털사이트에서 제공하는 주가는 20분 지연 시세를 제공하여 효용성이 많이 떨어졌던게 사실이다. 그러나 이제는 실시간 시세를 제공하고 있으므로, 증권사에서 제공하는 데이터 못지않게 빠르고 정확하다. 그래서 다음 사이트의 데이터를 가지고 와서 뚝딱뚝딱 기름칠해서 내가 필요로 하는 정보만을 추출하였다. 아래는 그 코드이다. import urllib.request, time, os, re, csv, sys def fe.. 더보기
왜 파이썬에서 멀티 프로세스를 사용하는가? | Why do we use multiprocess in python? 파이썬에서 멀티 쓰레드(Multi Thread)와 멀티 프로세스(Multi Process)를 사용하는 경우가 종종 있다. 그런데 왜 이런 모듈을 사용할까? 이유는 간단하다. 동일한 작업과정을 단시간에 효율적으로 처리하기 위해서다. 아래는 주식 분석 코드의 일부분만을 발췌해 보았다. Stock() 이라는 클래스를 정의하고 그 처리하는 과정과 처리하는데 소요된 시간을 표기하였다. 코스피, 코스닥 종목이 현 시점에서 도합 2,000 여 종목이 된다. 이를 하나씩 읽어들여 DB에 저장된 값으로 분석을 할 수도 있고, 인터넷이 연결되어 있다면 바로 주식 데이터를 다운받아 처리할 수도 있다. 이 중 하나의 방식으로 전 상장종목을 처리해 보았다. 대략 3822초가 소요되었다. 그러니까 1시간하고 약 4분 정도 걸린셈.. 더보기
나만의 주식 매매 프로그램을 이용한 수익 일지 개인적으로 주식 매매 경력(?)이 근 20년이 되어 간다. 지난 세월을 반추해보면, 주식만큼 날 괴롭힌게 있나 싶을정도로 천당도 맛 보았고, 지옥도 맛보게 한 것이기 때문이다. 어릴때는 일확천금에 대한 환상으로 온갖 정보를 찾아보고 섭렵하여 뭐든지 할 수 있을 것만 같았던 시절도 있었다. 그러나 세상이 내가 원하던 대로만 살아지던가. 인간의 욕심은 또 다른 욕심을 낳고, 그 욕심으로 말미암아 뜻하지 않은 일을 당하기도 하더란 말이다. 지족불욕이라 하였다. 욕심을 버리고 기계적으로 주식매매를 해보기로 마음 먹은지 10여년이 지났다. 그 간 많은 것들을 만들어보기도 하고, 폐기하기도 하였다. 물론, 지금도 진행형이다. 한 동안은 완벽하다고 생각했던 프로그램이 뜻하지 않은 변수로 사장되는 일도 있었다. 그렇지.. 더보기
Stochastic Oscillator(스탁캐스틱) 구현하기 using Python | Making Stochastic Oscillator by using Python The stochastic oscillator is calculated using the following formula: %K = 100(C - L14)/(H14 - L14) Where: C = the most recent closing price L14 = the low of the 14 previous trading sessions H14 = the highest price traded during the same 14-day period %K= the current market rate for the currency pair %D = 3-period moving average of %K 이 지표의 기초가 되는 일반적인 이론은 상승 추세에 있는 시장에서는 종가가 당일 최고가 근접 가격에 형성될 것이.. 더보기
볼린저밴드 구현하기 using python | Cal Bollinger bands using Python 파이썬을 이용해서 볼린저밴드 구현하기 Ver. 0.1def anaylize_bolllinger(df,dir_name,dest_path,date_list): df_normalize=df['Close']/df['Close'].ix[0,:] # Compute rolling mean,rolling standard deviation,upper and lower band of Bollinger rm=df['Close'].rolling(window=20,center=False).mean() rmstd=df['Close'].rolling(window=20,center=False).std() upper_band, lower_band = get_bollinger_bands(rm,rmstd) dp=df['Close'].ro.. 더보기
python pandas 에서 특정 컬럼값의 row 를 제거하기 | Deleting DataFrame row in Pandas based on column value 파이썬의 Pandas를 사용하면서 특정값의 row 가 존재할 때, 이 row 를 제거하기위해서는 그 값이 들어가는 row를 제외한 나머지 값들을 다시 dataframe으로 지정해주면 손쉽게 데이터를 처리할 수 있다. 위의 그림은 어느 특정 데이터에서 'Volume'값이 0인 값이 존재하는 row가 2개 있는 그림이다. 여기에서 이 두 항목을 제거하고 다른 데이터 핸들링이 필요할 경우에 유용하다. 아래 그림은 그 결과값이다. 더보기
주식 정보 데이터베이스(db) 구축하기 by using python | storing stock data into database(DB) by using python 몇 년 전부터 db에 저장된 데이터를 이용해서 종목 발굴 알고리즘을 돌려놓고 있으며, 이를 이용해 특이점이 발견된 종목은 바로바로 문자 or email 등을 통해서 알려주고 관련 데이터를 저장하게 하는 시스템을 구축해 놓은 상황이다. 관련해서 문의 글이나 메일 혹은 문자를 통해 방법을 문의하는 글이 있어 개략적이나마 기본 개념을 작성해 두려고 한다. 우선 파이썬을 이용해서 주식 데이터를 데이터베이스(db)에 저장하는 작업을 하려고 한다. 이를 위해 기본 개념 몇몇을 알고 있어야 하지만, 관심이 있으신 분들은 관련 정보를 공부해 보시길 바란다. 가장 먼저 파이썬이라는 프로그램의 기본 개념을 익혀야 할 것이다. 그런 다음 관련 모듈을 설치, 기본 문법등을 차근차근 학습하면 될 것이다. 아래 코드는 완전한 코.. 더보기
how to insert dataframe data into mysql database using pymysql(pure python3 library) import pandas as pdimport mysql.connector from sqlalchemy import create_engine python을 이용해서 만든 데이터를 데이터베이스(DB)에 저장을 하기위한 모듈들이다. python3 에서는 Python에서 잘 작동하던 mysqldb 가 작동하지 않는다. 그래서 예전에 만들어둔 코드들이 더 이상 작동을 하지 않아 한 동안 애를 먹었던적이 있었다. 이번 기회에 이전 데이터를 python3를 이용해서 다시금 DB에 저장해두고 활용을 해 보고자 관련글을 작성해 둔다. 아래는 python3에서 pandas dataframe 으로 만들어진 데이터를 mysql or mariadb 에 삽입하는 코드이다. 이 단순한 몇을을 찾기 위해 얼마나 헤매였단가~ 먼산 .. 더보기
파이썬을 이용한 구글 이미지 다운로더 만들기 | Making Image Downloader from google image by using Python 글을 쓰거나, 이미지 작업을 필요로 할 때, 인터넷 상에서 많은 이미지들을 검색 및 다운, 활용하는 사례가 많을 수 있다. 그럴 때마다 인터넷에 접속해서 관련 이미지를 찾아서 다운받고 활용하는게 상당히 번잡스럽게 느껴지곤 한다. 이를 위해 누군가 관련 이미지들을 폴더에 다운받아 놓아주었으면 할 때가 있는데, 걱정마시라(?) 우리에게는 프로그래밍 언어가 있다. 이번에는 파이썬으로 내가 필요로 하는 이미지를 하나의 폴더에 좌~악 받아주게 해 보려고 한다. 언제나 그렇듯, 이걸 왜 만들어 할 때가 있는데, 같은 작업을 계속 반복적으로 하는 것 보다, 단순 반복작업은 그냥 컴퓨터가 알아서 하게 만들어두면 얼마나 편하겠는가. 우리는 호모 사피엔스이다. 구석기 시대의 유물인 노가다 작업(?)은 그만 두시라. 처음부.. 더보기
아나콘다(Anaconda)에 TensorFlow 설치하기 on Mac | Installing TensorFlow at Anaconda on MAC OS X Anaconda 설치Anaconda 는 여러 수학, 과학 패키지를 기본적으로 포함하고 있는 파이썬 배포판입니다. Anaconda 는 "conda" 로 불리는 패키지 매니저를 사용하여 Virtualenv 와 유사한 환경 시스템을 제공합니다. (역주: 텐서플로우 뿐만이 아니라 일반적인 데이터 사이언스를 위해서도 아나콘다를 추천합니다)Virtualenv 처럼 conda 환경은 각기 다른 파이썬 프로젝트에서 필요한 패키지들의 버전이 충돌되지 않도록 다른 공간에서 운영합니다. 텐서플로우를 Anaconda 환경으로 설치하면 기존 파이썬 패키지들을 덮어쓰지 않게됩니다.Anaconda를 설치합니다.conda 환경을 만듭니다.conda 환경을 활성화 하고 그 안에 텐서플로우를 설치합니다.설치 후에는 텐서플로우를 사용하고.. 더보기
Web Crawler 012 - Domain Name Parsing - 도메인 네임 파싱하기. 안녕하세요. 이번 시간에는 크롤러가 어느 웹사이트를 크롤링 할지를 정해주는 도메인 네임에 대해 알아보고자 합니다. 인터넷은 참으로 광범위한 공간이죠. 만약 이러한 공간을 특별한 조건없이 크롤링하게 한다고 하면 어떻게 될까요? 아마도 내 컴퓨터의 모든 자원은 전세계 인터넷을 뒤지고 다니느라 바빠질 것입니다. 이러한 무한 루프를 방지하기 위해서는 특정한 조건을 주어 이 범위를 만족하는 사이트들만 크롤링 하라고 명령을 내려야 할 것입니다. 그래서 필요한 것이 도메인 네임입니다. 제 블로그를 기준으로 얘기를 하자면, 여기의 주소는 https://creativeworks.tistory.com 입니다. 여기에서 도메인 네임은 tistory.com 이 됩니다. 만약 tistory.com 을 제가 혼자 다 사용하고 있.. 더보기
Web Crawler 011 - Adding Links to Queue - 링크를 웨이팅 리스트에 추가하기. 이번 시간에는 이전 시간에 이어서 웹페이지에서 찾아낸 링크들을 waiting list 에 추가하는 함수를 만들어 보도록 하겠습니다. 어떤 특정 사이트에 있는 전체 웹페이지들을 크롤링하기 위해서 해당 사이트의 홈페이지를 들어가고 거기서 링크를 타고 타고 가서, 해당 사이트의 모든 링크들을 찾을 것입니다. 이렇게 찾아낸 링크 값들을 waiting list 에 넣게 하는 스파이더와 waiting list 에 저장이 된 링크들을 각각 따로 크롤링 할 스파이더들을 만들어야 합니다. 이와 같은 일련의 과정중 전자인 찾은 링크들을 waiting list ( queue) 에 넣어주기 위한 함수를 만들것 입니다. 우선 아래와 같이 찾은 링크를 인자로 받는 함수를 선언해 줍니다. ▼만약 전달 받은 링크의 url 값이 qu.. 더보기
Web Crawler 010 - Gather_Links 함수 만들기 이번 시간에는 앞 시간에서 코딩한 부분중 정의하지 못한 gather_links() 부분을 만들어 주도록 하겠습니다. 웹페이지의 url 값을 넣어주면 해당 페이지에서 링크를 포함하고 있는 html 값을 찾게 되는데, 여기에서 링크 값만을 추출하게 하여 리스트에 넣어 주어야 그 값으로 링크들의 웹페이지를 다시 크롤링 할 수 있게 됩니다. 우선, 아래와 같이 정의를 해 주었습니다. ▼ 여기에서 하나의 문제가 있는데, 파이썬에서 urlopen 모듈을 사용해서 웹페이지를 연결하면, 인간이 읽을 수 있는 형태의 문자를 받아 오는게 아니라, 컴퓨터(기계)가 이해할 수 있는 바이트(bytes: 0 or 1) 단위로 데이터를 가지고 옵니다. 질문을 주시는 많은 분들이 파이썬으로 크롤링할 때, 내가 지금 무엇을 크롤링하는.. 더보기
Web Crawler 007 - Initialize the Spider information - 스파이더 초기화. 이제 스파이더에서 사용될 변수(variables)들을 선언해주었으니, 다음으로는 스파이더 클래스를 초기화 하도록 하겠습니다. 우선 스파이더 클래스 초기화를 위해 정의를 해주어야겠죠? 아래와 같이 선언을 해주고, 사용할 인자는 project_name, base_url, domain_name 을 넣어 주었습니다. 프로젝트 네임은 어느 사이트를 크롤링할지 초기에 정해줄 이름입니다. 그리고 해당 사이트의 기본 주소인 base_url 을 넣어 주었습니다. 그리고 중요한 것 중 하나인 domain_name 을 넣어주었는데, 만약 도메인 네임을 특정 웹 사이트내로 한정하지 않는다면, 인터넷 전체를 링크 타고타고해서 크롤링을 하게 됩니다. 정말 이러면 구글의 크롤러처럼 전세계 모든 웹사이트를 서치할 수 있게 되어 버릴.. 더보기
Web Crawler 006 - Creating the spider - 스파이더 만들기. ## 시작하기에 앞서, Paek 님이 지적해 주신 사항입니다. 이전 시간까지는 main.py 로 작성을 하였는데, 파일명을 general.py 로 바꾸었습니다. 왜냐하면 추후에 만들어둔 모든 함수, 파일을 한곳에서 처리하기 위해 별도로 main.py 를 만들기 위함입니다. 지적해주신 Peak님 감사합니다. ## 이제 기본으로 필요한 도구들(함수)을 만둘어 보았으니, 다음으로 크롤링을 위한 스파이더를 만들어 보도록 하겠습니다. 파이썬에서 말하는 스파이더는 마치 거미가 거미줄(web)을 여기저기 돌아 다닌다는 의미로 네이밍이 되었습니다. 그와 마찬가지로 코딩을 통하여 웹상에서 링크를 타고 타고 돌아다니게 하기 위해 스파이더를 만들어 주도록 하겠습니다. 우선 필요한 모듈을 불러오도록 하겠습니다. 아래와 같이 .. 더보기
Web Crawler 005 - Parsing HTML and Find Links - HTML 파싱 및 링크 찾기. 이번 시간에는 HTML 을 파싱하고 웹페이지에서 링크들을 찾는 것 까지 다루어 보도록 하겠습니다. 우선 HTML을 파싱하기 위해 관련 모듈을 불러오겠습니다. ▼ urllib 에서 parse 도 불러오겠습니다. ▼ 링크를 찾는 클래스를 정의해 주도록 하겠습니다. ▼ 초기화를 아래와 같이 하고 HTMLParser를 종속하게 하였습니다. ▼ 웹페이지에서 tag 를 다루는 함수를 정의하고 찾게 될 tag를 확인할 용도로 print() 하도록 하였습니다. ▼ 에러는 아래와 같이 우선 정의해 주었습니다.▼ 클래스 기초 정의는 끝났습니다. 그럼 이게 어떤 의미인지 알아보도록 하겠습니다. 아래 코드를 보시면 finder 는 LinkFinder() 로부터 생성하였습니다. 그리고 웹페이지에서 찾을 태그가 feed() 안에.. 더보기
Web Crawler 004 - Accelerate Crawling by avoiding repetition - 중복을 회피하여 크롤링 속도 개선하기. 이전 시간까지는 기본적으로 어떤 웹 사이트를 크롤링하기 위해서 기초작업을 하였습니다. 프로젝트 생성, 링크를 저장할 파일 만들기, 파일 내용 삭제하기 등등. 이번에는 웹 크롤링을 할 때, 어떤 페이지를 타고 들어간다고 생각해보세요. 거기서 링크를 파일로 저장을 하였는데, 다른 곳에서도 같은 링크를 찾을 경우가 많을 것입니다. 이렇게 서로 중복되는 링크들을 크롤링을 하게 된다면, 시간이 꽤 걸릴 것입니다. 물론 몇 페이지가 안된다면, 체감할 정도는 아닐 것입니다. 그러나 크롤링 할 페이지가 1만 혹은 그 이상이 된다고 한다면, 상당한 시간을 중복된 링크를 크롤링하는데 소요하게 될 것입니다. 그래서 이번에는 이러한 중복 자체를 크롤링 하기 이전에 제거하는 코딩을 해 보려고 합니다. 파이썬에서는 여러개가 중복.. 더보기
Web Crawler 003 - 링크 찾기 및 삭제하기 (Adding and deleting links) 이번에는 기본 URL 에서 크롤링 하려고 찾은 링크들을 파일에 저장을 하려고 합니다. 멀티 프로세싱 혹은 멀티 쓰레딩 작업을 통해서, 하나의 과정은 링크를 찾아 파일에 넣어 저장하고, 다른 하나의 과정은 이렇게 찾은 링크들을 크롤링하게 하려고 합니다. 여기에서 찾은 링크를 파일에 저장을 할 시에 중복되는 링크도 존재하기 마련입니다. 그래서 그런것들의 중복 크롤링을 막기 위해, 애초에 크롤링할 파일에 해당 링크 URL 이 존재하면 추가적으로 append 하지 않게 하면 됩니다. 시작해 볼까요? 우선 이미 만들어 둔 파일에 링크를 더해가는 함수를 정의하겠습니다. ▼ append 모드로 해당 경로를 열어줍니다. 그리고 이것을 file 로 명명하겠습니다.▼ 파일을 열어 전달해 줄 데이터 값을 넣고 뒤에는 개행문.. 더보기
Web Crawler 002 - Creating Crawled files and Queue 이번 시간에는 지난 시간에 프로젝트(폴더)를 만드는 코딩에 이어, 웹사이트를 크롤링할 때 크롤링해야 할 웹페이지들의 URL 값을 가지고 있어야 하는데, 그렇게 하기 위해서 queue를 만들어 긁어 올 웹페이지 주소를 넣어 두려고 합니다. 이렇게 queue에 저장된 웹페이지 URL 을 가지고 다 긁어왔으면 해당 URL을 crawled 로 넘겨주어 더 이상 중복 크롤링하지 않게 하려고 합니다. 말보다는 코딩을 보는게 더 빠를거라 봅니다. 시작해 볼까요~? 히위~꼬우~! 지난 시간에 만든 부분에 아래와 같이 주석을 달아 주었습니다. 그리고 이번에 만들 부분에 주석도 함께 넣었습니다. 프로젝트 이름과, 기본 주소를 인자로 받는 파일을 만들어 줄 함수를 아래와 같이 정의하겠습니다. ▼ 기본 URL 을 가지고 어떤.. 더보기
Web Crawler 001 - Creating a New Project 요즈음 들어 귀찮이즘으로 만사를 내 팽개쳐두고 있는데, 블로그를 방문하는 많은 분들이 Python Web Crawling 에 질문을 많이 주시고, 또 방문 로그를 보아도 대부분 Web Crawling 으로 접속을 많이 하시는 듯 하여, 그 후속편을 살짝쿵~ 써보려고 자판을 두드려 보려고 합니다. 혹시 크롤링이 어떤 것인지 잘 모르시는 분은 아래 링크를 한번 보시면 도움이 되시리라 봅니다. [PYTHON 3] Tutorials 24. 웹 크롤러(like Google) 만들기 1 - How to build a web crawler [PYTHON 3] Tutorials 25. 웹 크롤러(like Google) 만들기 2 - How to build a web crawler 예전에 간략히 다룬 웹 크롤러는 블로그.. 더보기
[PYTHON 3] Tutorials 45. Struct (bytes data <-> normal data(human readable)) 안녕하세요. 이번 시간에는 Struct 에 대해서 알아보도록 하겠습니다. 파이썬에서 Struct이 무엇인지부터 얘기를 시작해볼까 합니다. 파이썬에서는 어떠한 형태의 데이터, 가령 numbers, letters, string 와 같은 데이터를 bytes (0,1 으로 이루어진 바이너리 형태의 데이터) 데이터로 converting 할 수 있습니다. 그럼 왜 이렇게 bytes 형태의 데이터로 전환을 할까요? 이는 우리가 사용하는 컴퓨터가 데이터를 저장하거나 네트워크를 통해 이러한 데이터를 주고 받을 때, 이진형태의 bytes data( 0, 1 )로 데이터를 다루기 때문입니다. 그러나 이런 형태의 데이터는 인간이 확인하여 인지하기는 힘든 점이 있습니다. 그러므로 평소에는 인간들이 읽을 수 있는 형태로 스크린에.. 더보기
find files and folders recursively in Python Using glob and iglob. Python 3.5+ Starting with Python version 3.5, the glob module supports the "**" directive (which is parsed only if you pass recursive flag):import glob for filename in glob.iglob('src/**/*.c', recursive=True): print(filename)If you need an list, just use glob.glob instead of glob.iglob. Python 2.2 to 3.4 For older Python versions, starting with Python 2.2, use os.walk to recursively walk a direc.. 더보기
남의 컴퓨터를 내 마음대로 다룬다? - Python Reverse Shell_004 - Client Connection to Server (파이썬 리버스 쉘 - 클라이언트에서 서버에 연결하기) 지난 시간에 이어서 이번 시간에는 클라이언트(타겟팅 컴퓨터 혹은 내가 조정하고자 하는 컴퓨터)에서 실행시킬 코드를 다루어 보도록 하겠습니다. 우선 아래와 같이 필요한 모듈을 import 해줍니다. ▼ 소켓을 실행시켜 변수 s 에 넣겠습니다.▼ 서버(내 컴퓨터)의 아이피 주소를 호스트에 할당해 줍니다. 여기 있는 아이피로 클라이언트(숙주 컴퓨터)가 찾아오게 하는 겁니다. 물론 아래와 같이 자신의 아이피를 고스란히 누설하는 크래커는 없을 것입니다. 보통은 다른 루트를 여러번 경유하게 하거나, 중간에 다른 매개체(!!)를 거치게 합니다. 이 부분은 다루지 않겠습니다. 그러다 정말 철컹철컹 당할 사람을 만들면 안되겠기에.....;; 아래 아이피도 임의의 가상 아이피 입니다. 집에서 공유기를 사용하신다면, 192.. 더보기