본문 바로가기

파이썬

[PYTHON 3] Tutorials 23. Downloading Files from the web - 파일 다운로드 하기 using 파이썬 안녕하세요. 이번 시간에는 지난 시간의 이미지(사진) 다운받기에 이어 파일을 다운받아 보도록 하겠습니다. 이미지 다운과는 약간 다르지만, 크게 어렵지는 않으니 느긋하게 읽어보시면 쉽게 이해할 수 있을 겁니다. 그럼 시작하겠습니다. 주식 분석을 위한 시세 자료를 다운 받기 할 예정입니다. 이제까지는 import 뒤에 불러올 모듈명을 바로 적어 주었습니다. 그런데 아래 그림은 앞에 from 을 적어주고 import 뒤 모듈명을 적어 주었네요. 이는 추후에 클래스를 다룰때 보다 자세히 설명드려야 할 사항이므로 지금은 그냥 넘어가셔도 무방합니다. ▼ 주식 관련 CSV(Comma Separated Value)파일을 찾아보았는데, 야후 파이낸스에 올라와 있더군요. 그래서 'finance.yahoo.com'으로 접속.. 더보기
[PYTHON 3] Tutorials 22. How to read and write Files - 파이썬에서 파일 읽고 쓰기 이번 시간에는 프로그래밍을 할 때 가장 중요한 요소 중 한가지인 파일 읽고 쓰기에 대해 알아보려고 합니다. 어떤 프로그램을 잘 만들었다고 하더라도 1회성으로 그 자료가 없어진다면 별 의미없는 작업이 될 것입니다. 데이터로 저장을 하고 이렇게 저장되거나 DB로 만들어 둔 자료들을 가지고 제2, 제3의 유용한 자료로 활욜할 수 있게 된다면 그제서야 자료로서 유용해질 것이기 때문입니다. 보통 이렇게 제2, 제3의 데이터로 활욜할 수 있는 분야들을 요즘에는 메타 데이터, 또는 빅데이터라고 하는 분야에 활용이 됩니다. 이 모든 사항들이 데이터가 기록이 이루어질 때 비로소 가능합니다. 그러려면 저장을 해야하는데 그러기 위한 단계가 파일의 형태로 남기는 것이겠죠. 자 그럼 시작을 해 볼까요? fw = open('te.. 더보기
[PYTHON 3] Tutorials 21. Download images from the web - 이미지(사진) 다운로드 하기 with 파이썬 안녕하세요. 이번 시간에는 앞시간에서 다룬 모듈을 사용해서 인터넷(웹) 상에서 이미지(사진)을 다운로드 해 보겠습니다. 그 까지것 직접 다운하면 되지 않냐? 할 수도 있겠으나, 우리는 호모 사피엔스( 생각하는 인간 ) 이지 않습니까! 번거로운 일은 컴퓨터가 알아서 하게 시키자는 취지입니다. 당연히 다운로드 해야할 양이 많아지면 귀차니즘이 발동 되니, 그 일을 컴퓨터에게 양보(?) 하는게 현명할 것입니다. 각설하고 시작하겠습니다. 앞에서 다룬 random 모듈을 불러들입니다. 파이썬 내장 모듈(함수)인 urllib를 불러들이는데, 그 중 request를 호출하였습니다. 우리가 웹브라우저(chrome, firefox, safari, internet explore, opera etc.)를 이용하여 인터넷을 서.. 더보기
[PYTHON 3] Tutorials 20. Modules(모듈화) 안녕하세요. 이번 시간에는 모듈(Modules)에 대해 알아보고자 합니다. 프로그래밍을 하다 보면 함수(Function)들을 사용하고 또 사용하는, 일명 재사용성이 증대되는데, 이럴때 자주 사용하는 함수들을 모아두고 불러와서 사용하면 훨씬 수월하게 프로그램을 작성할 수 있게 되겠죠? 시간도 절약하고 코드 재활용도 할 수 있게되는 것이죠. 이렇듯 자주 사용하는 함수들을 하나의 파일 형태로 모아 두는데 이를 모듈이라고 합니다. 모듈은 이미 누군가가 만들어 놓은 것도 있고 본인이 직접 만들어서 사용할 수도 있습니다. 이미 누군가 만들어 놓은것은 프로그램 상단에 'import'라는 단어를 넣고 불러오고자 하는 모듈명을 적어주면 됩니다. 만들어 놓은 모듈이 없다면 직접 만들어서 불러와서 사용할 수도 있습니다. 자.. 더보기
[PYTHON 3] Tutorials 19. Dictionary 안녕하세요. 이번 시간에는 파이썬에서 다루는 'Dictionary'에 대해 알아보고자 합니다. 딕션너리: 사전. 을 뜻하죠. 쉽게 이해하고 있듯이, 사전을 찾으면 단어:뜻 이렇게 이루어져 있습니다. 이 개념과 동일합니다. 어떤 단어를 찾았는데 그 안에 가지고 있는 의미, 뜻, 내용물이 뭔지 알려주게끔 이루어진 규칙을 말합니다. 이를 프로그래밍에서는 Key, Value 라고 각각 칭합니다. 단어: Key, 뜻: Value 라고 이해하시면 됩니다. 자 그럼 예제를 통해 자세히 알아보겠습니다. 친구라는 변수 안에 친구 이름과 특징을 딕셔너리({})로 넣어 두었습니다. 딕셔너리는 Curly Bracket {} 안에 세미콜론(:) 왼쪽에는 key 값을 오른쪽에는 value 값을 넣어주는게 원칙입니다. 위 코드에서.. 더보기
[PYTHON 3] Tutorials 18. Sets(중복제거) 안녕하세요. 이번 시간에는 Sets 에 대해서 알아보려고 합니다. Sets는 여러개의 리스트를 담는 일종의 그릇이라고 생각하면 되는데, 중복을 걸러내주는 역할을 합니다. 아래 예제로 다루겠지만, 마트에 가서 쇼핑을 해야 하는데 사야할 리스트가 있을겁니다. 그런데 품목이 여러개일 경우에 샀던 것을 또 살 경우가 있을 수 있습니다. 이럴 경우, 이미 리스트에 있는 것은 추가가 되지 않게 할 수 있는 프로그램을 만들 수 있어 편리하겠죠? 물론 다른 형태로 중복을 피할 수 있는 경우는 다반사일겁니다. 이럴경우에 사용하는 것이 파이썬에는 Sets 라고 합니다. 그럼 시작해 볼까요? 우선 사야할 쇼핑리스트 변수에 품목들을 쭈~욱 적습니다. 이 때, Curly Braket {} 으로 해야 합니다. 규칙이고 약속이니 .. 더보기
[PYTHON 3] Tutorials 17. Unpacking Arguments 이번 시간에는 Unpacking Arguments에 대해 알아보도록 하겠습니다. Unpacking 은 말 그대로 꾸러미 같은것을 푼다는 의미입니다. 즉, Arguments 꾸러미를 푸는 것이 어떤것인지 알아보려고 합니다. 자 그럼 시작해 보겠습니다. 간단히 임의로 몇살까지 살 수 있을지에 관한 계산을 할 수 있는 함수를 정의해 보았습니다. 물론, 허구성이며 단순 계산식이니 신빙성은 없는 산술식이라고 하겠습니다. 위의 그림처럼 3개의 parameters를 받는 health_calculator라는 함수를 정의 하였습니다. 나이, 하루에 먹는 사과 개수, 하루에 피는 담배는 얼마인지. 이런걸로만 만든 계산기입니다. 계산을 하고 결과를 answer에 저장하고 출력하게끔 하였습니다. 그리고 'brown'이라고 하.. 더보기
[PYTHON 3] Tutorials 16. a Flexible number of Arguments 안녕하세요. 이번 시간에는 Arguments 개수가 몇개인지 모를 때, 임의의 개수를 지정하게 하는 부분을 다루도록 하겠습니다. 자 그럼 시작하겠습니다. 지금까지 다룬 함수에서 arguments의 개수는 지정되어 있었습니다. 이는 호출할 때도 마찬가지였습니다. 여러개의 수를 더하는 함수를 만든다고 할 경우에 위의 그림처럼 2개의 숫자를 더하게 할 수 있습니다. 그러나 달랑 2개의 숫자를 더하기 위해 함수를 정의하고 사용하는게 너무 비효율적이라고 생각하지는 않나요? 그리고 우리가 몇개를 더할지 모를 경우도 많을테죠. 계산기를 예를 들어 보겠습니다. 이것 저것 더하다가 또 다른 수를 더해야 하는데, 더 이상 더하기를 할 수가 없다면 어떨까요? 그건 계산기 역할을 제대로 한다고 할 수가 없겠죠? 이점을 파이썬.. 더보기
[PYTHON 3] Tutorials 15. Keyword Arguments 안녕하세요. 이번 시간에는 'Keyword Arguments'에 대해서 알아보도록 하겠습니다. 일전의 튜토리얼에서 default arguments에 대해 알아보았는데, 그것의 연장선상에 있다고 생각하시면 되겠습니다. 자 그럼 시작하겠습니다. 우선 silly_sentence라고 하는 임의의 함수를 정의합니다. 여기의 arguments를 위와 같이 3개로 구성하겠습니다. name, action, item 으로 3개의 arguments를 지정해 줍니다. 일전의 튜토리얼에서 default arguments 에 얘기했었는데, 이 경우 argument를 전달해 주지 않았을 경우 함수에서 미리 지정한 default로 그 값을 대신한다는 내용이었습니다. keyword arguments 또한 비슷하다고 여기면 됩니다. .. 더보기
[PYTHON 3] Tutorials 14. Variable Scope 안녕하세요. 이번 시간에는 변수의 범위에 대해서 알아보고자 합니다. 변수의 범위에는 크게 지역변수(Local)와 전역변수(Global)가 있습니다. 지역변수는 특정지역(?)에서만 유효한 경우를 일컬으며, 전역변수는 말 그대로 어디서든 사용 가능한 변수를 말합니다. 말보다는 그림을 보면서 진행하는게 좋겠죠? 그럼 시작하겠습니다. 우선 임의의 숫자를 number 라고 하는 변수에 지정을 해 주었습니다. 역시 임의의 함수 abcd라고 하는 함수를 정의하고 단순히 number 를 프린트 하는 명령어만 가지고 있게 하였습니다. 이번에는 또 다른 함수 xyz 를 정의하고 역시 변수 number 를 출력하게 하였습니다. 두 함수를 정의하였으니 호출하여 사용을 해봐야겠죠? 위 그림과 같이 두 함수를 나란히 호출하였습니.. 더보기
[PYTHON 3] Tutorials 13. Default Values for Arguments 이번 시간에는 함수에 인자(Arguments)를 전달하지 않을 경우 에러가 발생할 수 있는데, 이를 어떻게 처리할지를 알아보도록 하겠습니다. 만약 이럴경우 함수에 인자가 없을 경우를 대비해 초기값(default)를 지정해 두면 에러가 발생하지 않습니다. 무슨말인지 감이 안오시면 아래 그림을 보면서 확인해 보시기 바랍니다. 그리고 모바일에서 볼 때 폰트가 너무 작아 가독성이 좋지 않다는 의견을 주신분들이 계셔서 Pycharm 의 코드, 콘솔 폰트의 크기를 키워보았습니다. 의견 주신분들께 감사드립니다. 그럼 시작해 보겠습니다. 우선 성별을 판단하는 함수를 정의하였습니다. 이전에 다룬 함수들과 다른점이 보이시나요? Arguments(인자)에 미리 값이 지정이 되어 있네요. 바로 sex='Unknown' 으로 .. 더보기
[PYTHON 3] Tutorials 12. Return Value 안녕하세요. 이번시간에는 이전 시간에서 다룬 함수에서 결과값을 어떻게 처리할지 얘기해 보도록 하겠습니다. 앞장에서는 함수를 정의하고 단순히 프린트를 사용하여 그 결과를 나타내도록 하였는데, 이번 시간에는 그 함수에서 다룬 값을 반환(Return)해서 다른 변수에 저장하게 하고 나중에 함수에서 반환받은 값을 담고 있는 변수를 활용할 수 있게 하는데 있습니다. 잘 이해가 안되시면 아래 그림으로 이야기를 이어 가도록 하겠습니다. 우선, 하나의 함수를 선언해 줍니다. 그냥 우스개소리로 데이트 할 수 있는 연령을 단순 계산할 수 있는 함수를 선언해 줍니다. 전달해 줄 인자로는 나이를 넣어주게 하였습니다. 그럼 이 전달받은 my_age로 계산을 하여 girls_age라는 변수에 넣어줍니다. 그리고 그 결과를 반환(.. 더보기
[PYTHON 3] Tutorials 11. Function 안녕하세요. 이번 시간에는 Function(함수)에 대해서 알아보도록 하겠습니다. 프로그램을 공부하시면 대부분의 프로그래밍 언어에서 함수를 얘기합니다. 그럼 함수를 왜 사용하고 어떤 것일까요? 단순하게 생각해보면 재사용성 이라고 말할 수 있을것 같습니다. 똑같은 역할을 하는 코드가 여러번 사용되면 이를 한번 만들어 두고 argument or parameter (함수를 만들때 전달해주는 값들) 값들만 바꾸어 주면 반복적으로 여러번 사용할 수 있을 것입니다. 이로 인해 가용 자원 절약, 코드 가독성 향상 등등 많은 이점을 꾀할 수 있게 됩니다. 각설하고 시작해 보겠습니다. 파이썬에서 함수를 정의할 때에는 앞에 def (definition: 정의) 함수명(전달할 인자): 이렇게 사용할 수 있습니다. def f.. 더보기
[PYTHON 3] Tutorials 10. Continue 안녕하세요. 이번 시간에는 지난시간에 다룬 break 에 이어 continue 를 얘기하고자 합니다. 기본적인 개념으로는 break는 진행중인 루프(Loop)를 중단하고 다음 단계를 진행하게하는 명령어이고, continue 는 진행중인 루프(Loop)에서 continue를 만나면 다음 단계의 루프를 진행하라는 명령어 입니다. 아직 감이 안 온다면 아래의 그림과 함께 보도록 하겠습니다. 먼저 일련의 숫자들을 numbersTaken 이라고 명명한 배열(lists)에 넣어줍니다. print() 를 사용해서 결과에 나타나는 숫자가 무엇을 의미하는지 알려줍니다. range()를 사용해서 1부터 19까지의 숫자를 n 이라는 임의의 변수에 하나씩 들어가게하여 반복하게 합니다. n 값이 numbersTaken 안에 존.. 더보기
[PYTHON 3] Tutorials 9. Comments and Break 안녕하세요. 이번시간에는 Comments and Break 에 대해 알아보고자 합니다. 우선 찾고자 하는 숫자(혹은 특정 값)을 프로그램에서 찾아야 할 필요가 있을 때 어떻게 해야 할까요? 기본적으로는 조건을 만족 시키는지 판단을 해야 할 것입니다. 일단, 찾고자 하는 수를 35라고 할 때, 이를 magicNumber에 할당을 하였습니다. 위의 그림은 파이썬에서 1줄 Comment 를 남길 때 사용하는 방법입니다. '#' 를 넣으면 그 뒤의 한줄은 컴파일을 하지 않겠다는 의미입니다. 만약 여러 문장을 Comments 처리해야 할 경우에는 Single Quote(') 을 세개를 사용합니다. ''' 주석처리 할 부분을 여기에 넣습니다. ''' 다시 본론으로 들어가면, 주석처리 한 내용처럼 이 프로그램은 매직.. 더보기
[PYTHON 3] Tutorials 8. Range and While 안녕하세요. 이번 시간에는 범위와 간격을 설정할 수 있는 range 와 반복문의 또 다른 형태인 while 에 대해서 간략히 알아 보도록 하겠습니다. 위의 그림은 앞에서 다룬 for 의 형태입니다. 여기에서 뒷 부분에 range() 라고 하는 부분이 보이는데요. 이 range() 는 괄호안의 범위까지를 의미합니다. 즉 range(10) 은 0,1,2,3,4,5,6,7,8,9 까지의 숫자를 의미합니다. 위의 for 문에서는 0,1,2,3,4,5,6,7,8,9 를 각각 한번씩 number 로 할당해서 아래의 명령을 수행하라는 의미가 됩니다. 결과값을 한번 예측 해보시고 아래로 내려가보세요. 네.. 위의 숫자들을 예측하셨다면, 제대로 이해하고 계신겁니다. 여기에서 왜 숫자들이 옆으로 나열이 안되고 아래로 나열.. 더보기
[PYTHON 3] Tutorials 7. for - 반복문 안녕하세요. 이번 시간에는 파이썬의 반복문을 알아보고자 합니다. 반복문 중에서도 'for' 반복문을 다룰까 합니다. 반복문(Loop)의 기본 개념은 동일한 일을 사람이 하면 쉽사리 지칠만한 일을 컴퓨터가 하면 수천, 수만, 많게는 무한대까지 같은일을 시킬 수 있게 해 주는 명령입니다. 각설하고 시작하겠습니다. 우선 foods 라고 하는 List(배열)을 만들고 거기에 속할만한 단어들을 넣어 주었습니다. 현재 foods 에는 총 5개의 음식이 들어 있군요. 파이썬에서 사용하는 반복문(loop) 중 for 의 기본 형태는 위와 같습니다. in foods: => foods 안에 있는 것들을 for f => 각각을 f 라고 임의로 지정하고 반복을 하라. 는 의미입니다. 즉, foods 안의 값들을 임의의 값 f.. 더보기
[PYTHON 3] Tutorials 6. if elif else - 조건문 안녕하세요. 이번 시간에는 파이썬의 조건문에 대해서 알아보겠습니다. 프로그래밍에서 가장 중요한 요소를 꼽자면 조건문과 반복문 이라고 말합니다. 그 중 하나인 조건문을 간략히 살펴보도록 하겠습니다. 우선, name 이라고 하는 변수에 "Scarlett Johansson" 이라는 문자열을 지정해 둡니다. 이는 조건문에서 조건의 True, False 결정에 사용될 예정입니다. 파이썬의 조건문은 다른 프로그래밍 언어와 약간 차이가 있는데, 조건문 마지막에 Colon(:) 을 넣어서 사용한다는 점입니다. 그리고 자연어 처럼 'is', 'or', 'not' 과 같은 것을 사용할 수 있습니다. 위의 조건문은 name == "Jason" 이거와 같은 의미가 됩니다. 즉 name 이 "Jason" 이라면(같다면) 혹은 .. 더보기
[PYTHON 3] Tutorials 5. Lists 안녕하세요. 이번 시간에는 파이썬에서 가장 중요하고, 사용 빈도수가 높은 Lists(배열)에 대해 알아볼까요? 직관적으로 생각하기에 리스트는 말 그대로 문자나, 숫자 등을 쭈욱~ 나열한 일련의 집합이라고 보시면 될것 같습니다. 문자, 숫자 어느 것을 집어 넣어도 상관 없겠으나 여기서는 간단히 숫자로만 설명을 하겠습니다. 1. players 라는 변수에 위와 같이 일련의 점수를 넣으려고 할 때, 파이썬에서는 리스트 형태로 'Square Bracket [ ] '을 사용합니다. players 에 29, 55, 52, 61, 78, 87 을 저장하였습니다. 2. 그럼 저장된 players 변수에 3번째 (컴퓨터는 0부터 카운트 한다고 지난 시간에 다루었습니다) 값을 확인해 볼까요? 52라는 숫자를 뱉어 내는군요.. 더보기
[PYTHON 3] Tutorials 4. Slicing up Strings 안녕하세요. 이번에는 문자열(strings)을 slicing up 하는 것을 다뤄보겠습니다. 우선 터미널을 열고 파이썬 인터프리터를 구동시킵니다. user 라는 변수에 문자열 "Barack Obama" 라고 하는 임의의 값을 할당해 주었습니다. 사람들은 숫자를 세어 보라고 하면 1부터 카운팅을 하지만, 컴퓨터는 0부터 카운팅을 합니다. 이는 비단 다른 컴퓨터 언어도 마찬가지이므로 기억해 두시면 좋겠습니다. 변수 user 의 첫번째 값이 뭔지 확인해 보려고 user[0] 을 입력하니 'B' 라고 알려주네요. 이번에는 user 안의 8번째(0부터 카운팅하니 8번째가 되겠죠?)값은 대문자 'O' 이네요. 물론 왼쪽부터 알아볼 수도 있지만, 오른쪽에서도 위의 그림처럼 slicing up 할 수 있습니다. 여기에.. 더보기
[PYTHON 3] Tutorials 3. Strings string 은 컴퓨터 프로그래밍에서 일종의 텍스트라고 생각하시면 됩니다. 가령, 이름, 문장등과 같은것을 일컬어 string이라고 할 수 있겠죠. 파이썬에서는 string 을 사용하기 위해서는 single quote(' ') 혹은 double quote(" ") 을 사용합니다. 위 문장들에서 " " , ' ' 안에 있는 것을 string으로 인식합니다. 위 문장에서 'I don't think she is 20' 이 부분은 오류가 있습니다. ' ' 은 시작과 끝을 알려주어야 하는데 don't 에도 single quote가 있어서 이 부분을 문장의 끝으로 인식을 해 버린 것입니다. 이럴경우 아래 그림과 같이 double quote을 사용하여 문제 해결을 합니다. double quote 을 사용하여 문장 전.. 더보기
[PYTHON 3] Tutorials 2. Numbers 안녕하세요. 이번 시간에는 파이썬에서 숫자는 어떻게 다루는지 간략히 보도록 하겠습니다. 말그대로 간략하기에, 이번에는 파이썬 인터프리터를 활용해서 진행하겠습니다. 맥에 있는 터미널(Terminal) 을 띄웁니다. 파이썬 3 버전이 깔려 있다면 아래와 같이 "python3" 이라고 넣으면 됩니다. 만약 파이썬이 깔려 있지 않다면 [MAC TIP] Mac에 Homebrew 설치하기를 참조하여 homebrew를 설치 하신 이후에 brew install python3 실행하시면 설치가 될 것입니다. 터미널에서 python3 를 넣습니다. 파이썬 인터프리터가 실행 된 모습입니다. 기본인 사칙 연산을 해보도록 하겠습니다. 정수(Integer)인 3 + 4 를 실행한 모습입니다. 결과는 7 이겠죠.. 3 * 20 의.. 더보기
[PYTHON 3] Tutorials 1. Python Installation 안녕하세요. Jason 입니다. 앞으로 시간이 있을 때 파이썬 튜토리얼을 조금씩 만들어서 올려보려고 합니다. 프로그램 초심자들도 쉽게 익힐 수 있는 언어 중 하나인 파이썬을 소개하고 조금이나마 컴퓨터를 활용한 생산성 향상에 도움이 되었으면 하여 시작하게 됨을 알려드립니다. 저의 컴퓨터 환경은 맥을 기반으로 하고 있어서 맥 위주로 설명이 이루어 지겠으나, 윈도우나 리눅스 등 여타 다른 OS 에서도 크게 다르지 않습니다. 읽어 보시고 궁금한 점이 있으시면 아는 한도내에서 설명을 드리겠습니다. 그럼 시작을 해 볼까요? 우선 파이썬을 시작하기에 앞서 프로그램을 설치해야겠죠? 아래 보이는 python.org 에 들어가셔서 다운받아 설치하셔도 됩니다. 주소는 : https://www.python.org 입니다. 그.. 더보기
[PYTHON] Python을 이용한 웹사이트 스캐너 만들기 - 7. 완결편 이번 시간에는 그동안 만들어 둔 함수들을 가지고 종합적으로 다루어 보도록 하겠습니다. 1편 소개편에서 말씀드린것 처럼 이것을 가지고 자신에게 보다 더 유용한 방향으로 수정, 편집해서 사용하시면 도움이 되리라 봅니다. 그럼 시작해보겠습니다. 1. 가장 처음 만들어 둔 main.py로 이동을 합니다. 여기에서 위와 같이 앞에서 만든 함수들을 불러옵니다. 2. ROOT_DIR 를 'sites' 라는 이름으로 지정을 해주었습니다. 향후 이 'sites' 폴더 밑에 각 사이트의 정보가 쌓이게 될 것입니다. 3. ROOT_DIR을 만들어 줄 것입니다. 아직 create_dir 함수를 정의하지 않았는데, 이는 아래에서 다룰 예정입니다. 4. 이제까지 만든 함수들을 종합적으로 다룰 함수 'gather_info'를 정의.. 더보기
[PYTHON] Python을 이용한 웹사이트 스캐너 만들기 - 6. whois 이제 거의 짧은 여정이 끝이 나갑니다. 이번 시간에는 'whois' 를 파이썬으로 구현해 보겠습니다. 1. whois.py 파일을 만들어 줍니다. 2. 여느때와 마찬가지로 os 를 임포트 해 줍니다. 3. whois 를 얻기 위한 함수를 정의해 줍니다. 4. 명령어에 "whois " + url 이 들어갈수 있도록 변수를 지정합니다. 한가지 주의할 점은 whois 뒤에 공백(스페이스)을 넣어 주어야 합니다. 아니면 whois 와 조사할 타겟 사이트가 붙어버려 명령이 수행 안되니까요. 5. 그렇게 지정한 명령어를 프로세스로 지정. 7. 지정된 프로세서를 result 에 넘겨주면서 string 로 컨버팅해줍니다. 8. 이렇게 컨버팅 된 result 를 리턴하면 끝입니다. 9. 이제 확인! 아래와 같이 프린트를.. 더보기
[PYTHON] Python을 이용한 웹사이트 스캐너 만들기 - 5. robots.txt 이번 시간에는 robots.txt 에 대해 알아보려고 합니다. robots.txt 파일이 어떤 역할을 하냐면, 웹을 만들때 구글이나, 야후, 네이버, 다음과 같은 검색엔진에서 크롤링(사이트를 프로그램으로 자동 저장하는것)을 하는데 이때 민감한 페이지나 관리자 페이지 같은것은 크롤링 하지 못하게 텍스트 파일 형태로 작성해 둔 것입니다. 보다 자세한 사항은 Robots.txt 링크를 참조하시면 이해하실 수 있을것 입니다. 자 그럼 시작해 보겠습니다. 1. 우선 robots_txt.py 파일을 만들어 주고 import urllib.request 를 작성해 줍니다. urllib 와 request 는 웹과 관련된 파이썬 모듈입니다. 2. io 또한 임포트 해줍니다. 3. get_robots_txt 함수를 정의하고.. 더보기
[PYTHON] Python을 이용한 웹사이트 스캐너 만들기 - 4. Nmap Port Scan 이제 타겟 서버의 아이피 주소까지 얻었습니다. 이제부터는 nmap을 사용하여 타겟 서버의 포트 개방 여부를 확인하고, 어떤 프로세서가 러닝되고 있는지 확인하려고 합니다. 그러기 위해서는 'NMAP' 이 설치가 되어 있어야 합니다. 맥을 사용하시는 분들이라면 homebrew 를 설치하신 이후에 brew install nmap 을 하시면 설치하실수 있습니다. 물론 리눅스를 설치하고 계신분은 바로 인스톨 하시면 됩니다. NMAP 으로 확인하려고 하는 결과를 먼저보여 드리면 아래 그림과 같습니다. 앞에서 얻은 tistory.com 의 아이피 주소인 180.70.93.117 을 넣어보니 http 프로토콜의 포트번호인 80번과, https의 포트번호인 443만 개방되어 있는것을 확인하실 수 있습니다. 자 그럼 본격.. 더보기
[PYTHON] Python을 이용한 웹사이트 스캐너 만들기 - 2 최상위 레벨 도메인 이름 Top level of Domain 은 가령. 티스토리 같은경우 http://www.tistory.com 이렇게 URL 이 있다고 하면 여기에서는 history.com 이 부분이 top level of domain 에 해당한다. 즉, 프로토콜(http), WWW 은 제외단되는 말이다. 터미널창에서 보다 자세히 확인해 보자. 위와 같이 터미널에서 프로토콜, www을 함께 넣으면 whois 명령어가 인식을 못하니 제대로 넣으라고한다. 그럼 아래처럼 하면 어떻까? 티스토리의 정보가 쫘~~악 뜬다. 음..과금 담당자의 연락처라든지.... ㅎㅎ 자 그럼 이러한 정보를 smooth하게 한방(?)에 해결하기 위해 시작해보자. 1. domain_name.py 파일을 만들어 주고 from tld import get_tl.. 더보기
[PYTHON] Python을 이용한 웹사이트 스캐너 만들기 - 1. 소개 파이썬을 이용해 간략한 웹사이트 스캐너를 만드는 과정을 소개하려 한다. 프로그래밍을 공부하는 분들에게 조금이나마 도움이 되었으면 하는 바람으로 이 글을 작성합니다. 금일 기준(2015년 10월 30일) 정말 개략적인 소개입니다. 여기에 아이디어를 덧붙여 본인에게 맞는 프로그램을 작성해 보시면 유용하리라 생각합니다. 자 그럼 시작해 보겠습니다. 우선. 이글은 파이썬이 어떤것이며, 본인의 컴퓨터에 깔려 있다는 전제하에 진행됩니다. 추후 기초적인 것부터 소개하는 글을 따로 올리겠지만, 현 시점에서는 건너띄고 진행하겠습니다. 또한, 베이스 OS 는 리눅스이면 금상첨화일 것입니다. 저는 맥에서 'Homebrew'를 이용해 리눅스 명령어를 설치해 사용하고 있습니다. 그리고 아래 IDE 툴은 Pycharm 이라고 불.. 더보기