crawling
*Udacity - Intro to Computer Science를 따라가고 있습니다.
https://classroom.udacity.com/courses/cs101
1. 코딩 공부를 하다가 중간에 포기하게 되는 이유
파이썬을 시작하면 보통 지루한 사칙연산과 문법부터 시작한다.
(아하, 왜 내가 파이썬을 싫어했는지 갑자기 깨달았다, 돌이켜보니 n 년 전 혼자 독학해보겠다고 파이썬 책을 사서 1장부터 실습해 본 적이 있다. 실패했고 그 뒤로 파이썬이 싫어졌었다. 그랬었다 참.)
그러다 보니 어디에 쓰이는지도 모르는 언어들을 무한히 반복하다가 지쳐나가떨어졌다. 마치 영어를 성문 영문법으로 시작하거나 핵심 영단어 1000제 따위로 시작하는 것과 같은 행동이다.
외국어를 쉽고 즐겁게 익히는 것 중 하나는 실제로 그 언어를 써봐야 하는 것이다. 이를테면 정말 외국인과 대화해 보거나 그 외국어가 쓰이는 나라를 여행하다 보면 어떻게 쓰이는지 이 언어가 얼마나 멋진 건지 저절로 체감하게 되니까. 코딩도 하나의 외국어다. 그러니까 이 언어에 더욱 흥미를 가지고 공부하려면 눈에 보이는 결과가 필요하다.
2. 웹 크롤러를 만들자 - 손에 잡히는 목적과 성취
다행히 유다시티는 첫 강의부터 그런 간단하지만 꽤 괜찮은 목적을 하나 제시해준다. 이 강의를 듣고 나면, 웹페이지에서 링크를 긁어모을 수 있는 웹 크롤러(web crawler)를 만들 수 있다. 괜찮지 않은가?
원하는 웹페이지를 하나 열고 링크를 싹 불러와 예쁘게 정리할 수 있는 프로그램을 내 손으로 직접 만드는 것이다. 좋다! 한 번 시작해보자.
3. 피할 수 없는 간단한 사칙연산들
파이썬에는 다른 컴퓨터 언어와 마찬가지로 간단한 사칙연산들을 할 수 있는 기능들이 있다. 이것은 우리가 현실에서 사용하는 것과 동일하게 +, - ,* / (덧셈, 뺄셈, 곱셈, 나누셈)으로 쓰인다. 간단하다. 식은 죽 먹기다. 이런 건 잽싸게 넘어가자.
4. 텍스트를 불러올 수 있다. = text [0:]
우리는 한 웹페이지의 원하는 정보(이를테면 링크들)를 긁어오는 웹 크롤러를 만들 것이다. 자 우리의 목적을 항상 기억하자.
정보 즉, 텍스트를 긁어올 것이니 우리는 텍스트를 불러오는 기능을 배워야 한다. 먼저 간단하게 텍스트를 정의해준다.
text = [1,2,3,4,5,6,7]
자 우리가 가진 텍스트는 1,2,3,4,5,6,7이다. 나중에는 저 자리에 원하는 웹페이지 내용을 넣게 될 것이다. 그리고 그 웹페이지에서 원하는 정보를 뽑아 올 것이다. 대표적으로 어디서부터 어디까지 텍스트를 뽑을 것인가가 중요하다. 컴퓨터는 말로 하면 못 알아듣고 숫자로 해야 알아듣는다. 그렇기 때문에 몇 번째부터 몇 번째 글자까지 뽑아 오라고 해줘야 한다. 그 방법은 다음과 같다.
*컴퓨터는 숫자를 0부터 센다.
text[0:] = 텍스트 처음부터 끝까지(컴퓨터는 0부터 센다) = [1,2,3,4,5,6,7]
text[4:] = 텍스트 5번째 문자부터 끝까지 =[5,6,7]
text [4:6] = 텍스트 5번째 문자부터 7 전까지 [5,6]
text[:-1] = 뒤에서 첫 번째 [7]
5. 특정 단어가 어디(몇 번째)에 있는지 검색해 볼 수 있다. = text.find('나')
찾는 방법은 다음과 같다. 우리는 특정 텍스트에서 foo라는 단어를 찾아볼 것이다.
text.find('foo')
text라는 파일에서 foo의 위치를 찾아준다 이를테면 3번째부터 시작한다면 4, 해당 택스트에 foo가 없다면 -1을 띄운다. 컴퓨터는 바보라 하나를 찾으면 찾았어! 하고 프로그램을 종료한다. 그런데 만약 foo가 여러 개라면 두 번째는 어떻게 찾을까.
text = 'foo is foo'
자 foo가 두 번 나오는 택스트다. 두 번째 foo가 몇 번째부터 시작하는지 알고 싶다면 일단 첫 번째 foo부터 찾는다.
text.find('foo')
>>>0
0을 띄웠다, 첫 글자부터 나온다는 소리다. 첫 번째 foo가 0번째에서 나오니. 0,1,2번째에 있는 요 세 글자가 첫 foo일 것이다. 그럼 그다음인 3번째부터 검색해보라고 하자.
text.find('foo',3) // text의 3번째 글자부터 'foo'를 찾아!
이렇게 하면 3번째 이후부터 검색하니 다음 foo를 찾아서 이야기해줌
>>> 8
자 한 페이지에 같은 단어가 이렇게 여러 개가 있어도 찾을 수 있는 방법을 알게 되었다.
6. 모든 것을 문자열(string)로 바꿔주는 str
우리는 문자가 편하지만 컴퓨터는 자꾸 숫자를 원한다. 컴퓨터가 가진 숫자 값들을 우리네들이 쓰는 문자열(string)로 바꾸고 싶다면 string의 첫 3글자 str을 이용해보자
str(<number>) => <string> // string의 정의는 이렇다.
str(89)='89'
이렇게 하면 '89'는 숫자처럼 보이지만 사실은 문자가 되어버렸기 때문에, 더 이상 숫자처럼 쓰이지 않는다.
7. 파이썬은 반올림 쟁이
파이썬은 정수로 반올림을 하는 성질이 있다. 그러니까, 소수점이 있는 글자를 쓸 때 주의해야 한다.
x=3.14 라고 하면 파이선은 x=3으로
x= 27.89 라고 하면 파이선은 x=28로
자동으로 고쳐준다
자 여기까지는 안배우고 넘어갈 수 없는 파이썬의 상식, 알파벳 같은 부분이었다. 이제 이런 간단한 것들을 조합하여 내가 원하는 것을 만들어 낼 수 있는 프로시저 부분을 다음 포스팅에서 알아보자.