본문 바로가기

2017/077

웹 크롤링 with Python 4장 웹 크롤링 with Python 4장 웹 크롤링을 통해 자연어를 읽고 쓰는 기능을 수행할 수 있다. 이는 웹 크롤링 파트에서 데이터를 분석하는 부분에 속한다고 볼 수 있다. 웹에서 자연어로 구성된 데이터를 가지고 와서 이를 우리가 원하는 결과물로 바꾸어주는 과정을 의미한다. 또한 일반적으로 구글이나 네이버와 같은 검색 엔진을 통해 우리가 원하는 정보를 찾는데 이런 과정이 어떻게 진행하는지에 대해서도 알 수 있게 된다. 검색창에 자연어를 입력하였는데 어떻게 해서 우리가 원하는 결과물로 잘 도달할 수 있는지가 바로 웹 크롤링의 과정에 속하게 된다. 우선 웹 상에 있는 자연어 데이터에는 불필요한 정보들이 매우 많다. 우리는 이러한 정보를 정리하고 필요한 정보만을 추출할 필요가 있다. 그래서 n-그램의 방법과 .. 2017. 7. 13.
C++ 프로그램 디자인 C++ 프로그램 디자인 코딩에 들어가기 전에 디자인 내용을 형식화하면 각 부분을 어떻게 연결할지 결정하는 데 도움을 준다. 비슷한 부분이 많은 코드를 하나로 묶어서 코드가 지저분해 지는 것을 막을 수도 있게 된다. 또한 다른 시스템과 연동을 할 때에도 이를 염두 해 두고 코드를 짜는 것과 코드를 우선적으로 짜고 나서 연동할 때에는 크게 차이가 발생하게 된다. C++ 언어는 너무나 많은 기능이 들어가 있다. 객체, 연산자 오버로딩, 예외 처리, 템플릿 등등 여러 다른 기능이 공존하고 있어 디자인 작업을 하는데 어려움을 겪는다. 또한 공용 코드와 재사용 코드를 설계할 수 있는 많은 기능이 있어 디자인을 하는데 신경을 많이 써야한다. C++ 언어에서 근간이 되는 디자인 원칙은 추상화와 재사용이다. 추상화는 내.. 2017. 7. 13.
C++ 문자열 & 코딩 스타일 C++ 문자열 & 코딩 스타일 문자열은 프로그램을 작성할 때 거의 항상 사용된다. C++은 안전하고 사용하기 쉬운 string 클래스를 제공한다. 문자열에 대해서 크기를 자유자재로 바꾸는 것은 물론 부분적으로 추출하거나 바꿀 수 있는 여러 가지 고급 기능을 지원한다. cstring 헤더 파일을 사용하면 C의 여러 문자열을 처리하는 다음의 함수들을 사용할 수 있게 된다. strcpy()는 두 개의 문자열 포인터를 받아서 첫 번째 문자열에 두 번째 문자열을 복사하는데 첫 번째 문자열이 적합한 메모리 공간을 가졌는지 신경 쓰지 않는다. strlen()은 원본 문자열의 크기를 알기 위한 함수인데 리턴하는 값은 무자열의 크기지 실제 필요한 메모리의 크기는 아니다. strcat()은 문자열을 이어 붙이는데 사용한다.. 2017. 7. 12.
웹 크롤링 with Python 3장 웹 크롤링 with Python 3장 문서 인코딩은 애프리케이션이 그 문서를 읽는 방법을 지정한다. 모든 문서는 근본적으로 0과 1로 인코딩되어 있다. 인코딩 알고리즘을 통해 문서에 대한 다양한 정보가 저장된다. 다양한 언어나 숫자에 대한 정보를 저장하고 출력하기 위해서는 UTF-8에 대한 것을 알아야한다. 원래 영어를 사용하는 입장에서는 ASCII를 사용하게 되면 인코딩을 쉽게 할 수 있었다. 하지만 다른 나라의 언어를 담고 있지는 못했다. 이에 대해 Universal Character Set Transformation Format – 8 bit로 UTF-8을 사용하여 인코딩을 하면 모든 글자를 표현할 수 있게 된다. CSV 파일을 읽는 방법은 다양하다. 원하는 파일을 직접 내려받은 후 파이썬에 그 파.. 2017. 7. 11.
웹 크롤링 with Python 2장 웹 크롤링 with Python 2장 웹 크롤러라는 이름은 웹을 크롤링하기 때문에 붙여진 이름이다. 그 핵심은 재귀이다. 웹 크롤러는 URL에서 페이지를 가져오고, 그 페이지를 검사해 다른 URL을 찾고, 다시 그 페이지를 가져오는 작업을 무한히 반복한다. 하지만 웹 크롤러를 사용할 때는 반드시 대역폭에 세심한 주의를 기울여야 하며, 타켓 서버의 부하를 줄일 방법을 강구해야 한다. API는 애플리케이션 프로그래밍 인터페이스로 서로 정보를 공유해야 하는 소프트웨어 사이에서 국제어 구실을 하도록 디자인된 인터페이스이다. API가 요청을 보낼 때는 HTTP를 통해 데이터를 요청하며 API는 이 데이터를 XML이나 JSON 형식으로 반환한다. HTTP를 통해 웹 서버에 정보를 요청하는 방법은 GET과 POST가.. 2017. 7. 11.
웹 크롤링 with Python 1장 웹 크롤링 with Python 1장 웹 브라우저는 패킷을 만들고, 보내고, 돌아온 데이터를 해석해 사진, 소리, 비디오, 텍스트 등으로 표현하는 매우 유용한 애플리케이션이다. 웹 브라우저는 코드이기 때문에 코드는 떼어내서 기본 구성 요소를 나누고, 다시 만들고, 재사용하고, 원하는 어떤 것으로든 바꿀 수 있다. 웹 크롤링은 웹 브라우저로부터 우리가 가공하고 싶은 데이터를 가져오는 과정이다. 여기에서는 가져오는 과정과 저장하는 과정, 다시 불러오는 과정 등등이 포함되어 있다. urllib 라이브러리는 파이썬의 표준 라이브러리로 웹을 통해 데이터를 요청하는 함수, 쿠키를 처리하는 함수, 심지어 헤더나 유저 에이전트 같은 메타데이터를 바꾸는 함수도 있다. urllib 라이브러리의 함수 중에서 urlopen은.. 2017. 7. 11.
C++ 언어의 기초 C++ 언어의 기초 주석은 프로그래머를 위한 것으로 컴파일러는 주석을 무시한다. 주석은 //와 /*를 사용하여 나타낼 수 있다. C++은 세 단계를 거쳐서 빌드 된다. 전처리 작업으로 코드 내에 지시된 메타 정보를 인식하여 자동으로 코드를 수정하고 컴파일 작업으로 소스 코드를 기계어로 번역한다. 마지막 링크 작업으로 기계어로 된 여러 오브젝트 파일을 묶어서 하나의 실행 파일로 만든다. 전처리 지시자인 #include은 헤더 파일의 코드를 가져와서 현재 소스 파일에 삽입하도록 지시한다. #define은 상수나 매크로를 정의하는데 사용되고 #ifdef나 #ifndef는 헤더 파일의 중복 인클루드를 막는 경우에 사용된다. main 함수는 프로그램을 실행할 때 가장 먼저 호출되는 시작점이다. main의 인자로는.. 2017. 7. 11.