※ 요약

파이썬 requests 모듈은 간편한 HTTP 요청처리를 위해 사용하는 모듈로써, 기본 내장 모듈이 아니라 개발자가 따로 설치해주어야 한다. 이번 포스트에서는 pip를 이용하여 requests를 설치하는 방법을 알아보도록 하겠다.



※ 설치 환경

운영체제 : 윈도우10 x64

파이썬 버전 : 3.5.1

requests 버전 : 2.12.5


※ 설치 방법

먼저 커맨드를 실행하기 위해서 실행 창에 cmd라고 입력한뒤 확인 버튼을 누른다. 잘 모르겠으면 [윈도우] 명령 프롬프트(cmd) 실행하는 방법이라는 포스트를 참고하기 바란다.



커맨드 창이 뜨면 아래와 같이 작업하면 된다.

1. pip는 파이썬이 설치된 폴더 하위에 Scripts 폴더에 있으므로 Scripts 폴더까지 이동한다. 이동할 때는 cd(Change Directory) 명령어로 한다.

2. pip install requests 라고 입력하여 설치 진행

3. 설치 완료 확인


설치 진행이 잘 완료되었는지 확인하기 위해 아래와 같이 import해보았고, 설치된 경로를 출력하는 걸 보니 설치가 성공적이라는 걸 알 수 있었다.




※ 요약

selenium(셀레니움) 라이브러리는 본래 웹사이트의 테스트를 위한 목적으로 제작되었지만 자바스크립트 같이 동적으로 구성된 페이지를 크롤링하거나 사이트 캡쳐 등을 할 때에도 사용된다. 이번 포스트에서는 셀레니움을 설치하는 방법을 알아볼텐데, 참고로 설치는 selenium 웹사이트에서 파일을 다운로드 받아 직접 설치하거나 pip 같은 패키지 관리자로 간단하게 설치할 수 있으며 오늘은 비교적 간편하게 설치할 수 있도록 pip를 이용한 설치 방법을 소개하겠다.


※ 설치 환경

운영체제 : 윈도우10 x64

파이썬 버전 : 3.5.1

셀레니움 버전 : 3.0.2



※ 설치 방법

설치는 커맨드 창에서 진행해야하므로 명령 프롬프트를 실행하도록 한다. 실행 창에 cmd라고 입력하면 된다.



진행은 크게 3단계로 진행된다. 

1. pip로 설치하기 위해 pip가 위치하고 있는 폴더로 이동한다. pip는 파이썬이 설치된 폴더 하위에 Scripts 폴더에 있다.

2. 설치 명령어 pip install selenium로 설치를 진행한다.

3. 설치 완료를 확인한다.



설치가 제대로 되었는지 확인하기 위해 아래와 같이 입력하여 실행해보았는데, 설치된 경로를 출력하는 걸 보니 잘 설치가 된걸 알 수 있었다. 필자는 셀레니움과 팬텀js(phantomjs)를 연동할 것이고 다음 포스트에서는 phantomjs를 내려받고 연동하는 방법을 알아보도록 하겠다.




※ 요약

파이썬은 기본적으로 많은 내장 라이브러리들을 지원하고 있지만 불행히도 MySQL 관련은 없다. 이 말은 즉, 사용자가 직접 라이브러리를 설치해줘야 한다는 말인데 너무 걱정하지는 말자. pip를 이용하면 누구나 쉽게 설치할 수 있기 때문이다. 참고로 Python에서 MySQL을 지원하는 라이브러리들은 적지 않은 편이며, 이번 포스트에서는 널리 사용되는 라이브러리 중 하나인 pymysql의 설치 방법에 대해 알아볼 것이다.


※ 설치 환경

운영체제 : 윈도우10 x64

파이썬 버전 : 3.5.1

pymysql 버전 : 0.7.9


※ 공식 다운로드 링크



※ 설치 방법

먼저 커맨드 창을 띄우기 위해 실행 창에 cmd라고 입력한다. 혹 커맨드 창 실행 방법을 모른다면 [윈도우] 명령 프롬프트(cmd) 실행하는 방법이라는 포스트를 참고하기 바란다.


아래는 실행된 커맨드 창이며, 절차는 아래와 같다.

1. 파이썬이 설치된 폴더 하위의 Scripts 폴더로 이동

2. 설치 명령어 pip install pymysql로 설치 진행

3. 설치 완료 확인



추가로 좀 더 설명하자면.. 이동은 cd를 치고 경로를 치면 된다. 혹시 드라이브를 바꿔야 한다면 d:나 e:등 cd 명령어 없이 해당 드라이브만 치면 드라이브가 변경되니 참고 바란다. 이 부분에서 막히는 분들이 가끔 있는데 댓글 달면 도움을 드리겠다.


성공적으로 설치되었다고 하여 확인 차 아래와 같이 입력해보니 잘 설치된걸 확인할 수 있었다. 만약 설치가 잘 안되었다면 파란색 메시지(pymysql이 설치된 경로) 대신 빨간 에러 메시지를 내뿜었을 것이다.



간단한 예제를 작성하여 보았다. 접속도 잘 되고 SELECT문도 잘 실행되어 MariaDB에 있는 데이터를 잘 가져왔다. 참고로 아래 예제는 MySQL 대신 MariaDB에서 진행한 예제다. 아는 분들은 다 알겠지만 MySQL과 MariaDB는 호환이 된다.(디자인 측면에서 말이다.)






※ 요약

파이썬으로 웹을 크롤링 하기 위한 필수 라이브러리 중 하나인 BeautifulSoup을 설치하는 방법을 알아보도록 하겠다. 설치는 pip을 통해 할 것이며, 특정 버전을 원하는 독자는 해당 버전을 사이트에서 직접 다운로드 받아 수동으로 설치할 수도 있다. 물론 귀찮겠지만 말이다.


※ 설치 환경

운영체제 : 윈도우10 x64

파이썬 버전 : 3.5.1

BeautifulSoup 버전 : 4.5.3


※ 공식 홈페이지 및 다운로드 사이트



※ 설치 방법

먼저 cmd 창을 실행하도록 한다. 혹시 cmd창을 실행할 줄 모른다면 [윈도우] 명령 프롬프트(cmd) 실행하는 방법이라는 게시글을 참고하기 바란다. cmd창이 실행 되었으면 첫 번째 cd 명령어로 파이썬이 설치된 위치까지 이동하기 바란다. 두 번째로 파이썬 폴더 하위에 있는 Scripts 폴더로 이동하기 바란다. 마지막으로 설치를 해주면 되는데, pip install beautifulsoup4라는 명령어를 입력하여 라이브러리를 설치하기 바란다.



설치가 완료되면 아래와 같이 성공 메시지가 뜬다.



아래는 설치가 되었는지 확인하기 위해 파이썬 쉘에 라이브러리를 임포트해본 화면이다. 파란색 텍스트로 BeautifulSoup이 설치된 경로가 잘 나오는 걸로 봐서 설치가 잘 되었다. 설치가 잘 안되었다면 빨간색 텍스트로 에러 메시지가 나오니 참고바란다.



 

※ 요약
이번 포스트에서는 문자 집합을 이용한 검색 방법에 대해 알아볼 것이다. 문자 집합은 이전 포스트에서 배웠던 .(마침표)처럼 모든 문자와의 일치가 아닌, 사용자가 원하는 범위의 문자들과 일치시킬 수 있다. 정규표현식에서 문자 집합은 기초적이고 쉬운 내용이지만 상당히 자주 사용되므로 잘 알아둘 필요가 있다.


※ 문자 집합이 필요한 상황

우리는 t로 시작하고 t로 끝나는, 알파벳으로만 이뤄진 네 글자 단어를 찾아야 하는 상황이라고 가정해보자. 이전 포스트에서 배운 내용으로는 정규표현식을 작성할때 "t..t" 밖에 작성을 못할텐데, "t..t"로는 "test"나 "text"처럼 우리가 원하는 값도 찾지만, "t$%t"나 "t-0t"처럼 우리가 찾지 말아야 하는 것도 찾으므로 문제가 된다. 이럴때 문자 집합을 이용하면 간단히 해결된다.


※ 사용 방법
문자 집합은 메타 문자인 [](대괄호)를 이용하여 표현한다.


※ 사용예
아래는 위의 예제를 수정한 것이다. .(마침표) 대신 메타 문자 []를 이용하여 t로 시작하고 t로 끝나는, 알파벳으로만 이뤄진 네 글자 단어들을 찾았다. [] 안의 a-z는 abcdefghijklmnopqrstuvwxyz와 같은 의미로써, a-z와 일치하는 문자를 검색한다는 의미다.


근데 위의 예제는 오직 소문자만 검색하는데, 대문자도 검색하고 싶으면 아래처럼 A-Z도 추가하면 된다.


아래는 0-9을 이용해 2자리로 숫자로만 이뤄진 단어를 검색하는 예제이다. A-Z처럼 숫자도 0-9로 표현할 수 있으며 당연히 알겠지만 0-9는 마찬가지로 0123456789과 같은 의미다.



이번 예제는 위에서 배운 A-Z, a-z, 0-9 범위들을 응용한 16진수 컬러 코드를 찾는 예제이고 문자 집합 [A-Fa-f0-9]를 이용해 6자리 16진수 0 1 2 3 4 5 6 7 8 9 A B C D E F의 범위를 찾는 정규표현식을 작성해봤다. HTML 컬러코드는 6자리 이므로 [A-Fa-f0-9]를 여섯 번이나 반복했는데.. 너무 길지만 원하는 결과를 얻긴 하였다.


위의 예제는 길어도 너무 길다. 나중에 배울 내용이지만 아래처럼 구간을 지정해서 정규식을 작성하면 간단히 할 수 있다.



※ 제외하고 검색

[](대괄호)안에 문자 집합을 표현할때 ^(캐럿)문자를 사용하면 해당 표현식은 제외가 된다. 예제를 보면 이해가 빠를 것이다.

먼저 {1,}은 나중에 배우겠지만 최소 한 글자거나 그 이상이라는 의미고 [^0-9\n]의 의미는 0-9와 \n를 제외한다는 의미다.

고로 [^0-9\n]{1,}의 의미는 0-9와 \n(개행)을 제외한 최소 한 글자 이상의 패턴을 찾으라는 의미이고 결과는 아래와 같다.


※ 사용시 주의사항

1. -(하이픈)을 이용하여 범위를 지정할때는 작은 값이 먼저 와야 한다. [Z-A]나 [9-0]처럼 값을 거꾸로 하면 안된다.

2. ^(캐럿)은 위치에 따라 의미가 달라진다. []안에서는 제외를, []밖에서는 문자열의 시작을 나타낸다.

 

 

 

 


※ 요약
제목 그대로 기본적인 검색 방법에 대해 알아볼텐데, 어려운 내용이 아니므로 간단하게 설명하고 끝내도록 하겠다.


※ 있는 그대로 검색

평범한 검색 방법이다. 이 검색 방법은 PC로 문서(*.txt나 워드 등) 작업을 해본 사람이면 다 사용해봤을 법한 내용이다.


준비된 예문에 정규표현식 "e"를 입력하였고, 정규표현식 "e"와 일치된 모든 e가 하이라이팅되었다.

여기서 사용된 정규표현식 "e"는 평범한 텍스트여서 정규식처럼 안보일수도 있지만 확실한 정규식이다.

참고로 matches(일치)된 개수는 45개이다.


이번에 사용한 정규표현식은 "123"이며 위에서 사용한 "e"와 마찬가지로 확실한 정규식이다.

다만 "e"나 "123"처럼 평범한 텍스트로만 이루어진 정규표현식은 낭비지만 정규식을 처음 알아가기에는 좋기에 예제로 사용해봤다.



※ 대소문자 다루기

정규표현식은 기본적으로 대소문자를 구분한다. 하지만 대소문자를 무시하는 기능이 있는데, regexr의 경우 flags에서 "ignore case" 옵션을 체크하면 된다. 아래는 대소문자를 무시한 상황에서의 결과 화면인데, 보면 Te도 검색된걸 확인할 수 있다.

 

※ 모든 문자 찾기

정규표현식에서 "."(마침표)는 모든 문자 하나와 일치한다. 무슨 말인지 모르겠으면 아래 결과를 한 번 보면 이해할 수 있을 것이다. 정규표현식 "e.t"를 입력했더니 e로 시작하고 t로 끝나는 모든 문자열을 검색했다. 앞서 설명처럼 "."은 공백 문자가 오든 영문자가 오든 상관없이 모든 문자를 의미한다.(단, 줄바꿈(newline)문자는 제외된 경우도 있다.)

참고로 "."은 메타 문자 중 하나이며, 다른 메타 문자도 알고 싶다면 이전에 올린 포스트를 참고하기 바란다. 


"."은 연달아 사용할 수도 있다. 아래처럼 정규식 "t..t"를 입력하니 t로 시작하고 t로 끝나는 네 글자를 검색하였다.



※ 특수 문자 검색

위에서 "."(마침표)는 특별한 기능(의미)이 부여된 메타 문자라서 검색하려면 "." 앞에 "\"을 붙여줘야 한다.

"\."가 입력된 아래 예제를 보면 한 번에 이해할 것이다. "\"도 "."과 마찬가지로 메타 문자이다.


"\"도 메타 문자라서 마찬가지로 앞에 "\"을 붙여줘야 한다. 예문을 보면 바로 이해할 수 있을 것이다.



  

※ 요약

이번 포스팅에서는 기본 메타 문자와 수량자, 위치 지정, 특수한 문자, 역참조와 전후방 탐색, 대소문자 변환, 변경자들에 대해서 간략하게 표로 알아볼 것이다. 정규표현식에 대해서 거의 모른다면 봐도 별도움이 안되겠지만, 정규식을 예전에 공부했는데 잊어먹었을 경우 레퍼런스로는 많은 도움이 될 것이다.

아무튼 이번 포스팅의 궁극적인 목적은 나와 여러분의 레퍼런스 겸, 앞으로 정규식을 포스팅 함에 있어 원할한 진행을 위해서이다.


※ 설명

기본 메타 문자

 .

 점 하나당 하나의 문자에 해당하며 모든 문자와 일치

 |

 왼쪽 혹은 오른쪽과 일치

 []

 문자 집합 구성원 중 하나와 일치

 [^]

 문자 집합 구성원을 제외하고 일치

 -

 범위 정의 ([A-Z]와 같은 형태)

 \

 다음에 오는 문자를 이스케이프

수량자

 *

 문자가 없는 경우나 하나 이상 연속하는 문자 찾기

 *?

 게으른 * 문자

 +

 문자 하나 이상 찾기

 +?

 게으른 + 문자

 ?

 문자가 없거나 하나인 문자 찾기

 {n}

 정확히 요소와 n번 일치

 {m,n}

 요소와 m에서 n번 일치

 {n,}

 요소와 n번 이상 일치

 {n,}?

 게으른 {n,}

위치 지정

 ^

 문자열의 시작과 일치

 \A

 문자열의 시작과 일치

 $

 문자열의 끝과 일치

 \Z

 문자열의 끝과 일치

 \<

 단어의 시작과 일치

 \>

 단어의 끝과 일치

 \b

 단어 경계와 일치

 \B

 \b와 반대로 일치

단축 문자

(특수한 문자)

 [\b]

 역스페이스

 \c

 제어문자와 일치

 \d

 모든 숫자와 일치

 \D

 \d와 반대

 \f

 페이지 넘기기(form feed)

 \n

 줄바꿈

 \r

 캐리지 리턴

 \s

 공백 문자와 일치

 \S

 \s와 반대로 일치

 \t

 탭

 \v

 수직 탭

 \w

 영숫자 문자나 밑줄과 일치

 \W

 \w와 반대로 일치

 \x

 16진수 숫자와 일치

 \O

 8진수 숫자와 일치

역참조와 전후방 탐색

 ()

 하위 표현식 정의

 \1

 첫 번째 일치한 하위 표현식. 두 번째 일치한 하위 표현식은 \2로 표기

 ?=

 전방 탐색

 ?<=

 후방 탐색

 ?!

 부정형 전방 탐색

 ?<!

 부정형 후방 탐색

 ?(backreference)true

 조건 지정

 ?(backreference)true|false

 else 표현식 조건 지정

대소문자 변환

 \E

 \L 혹은 \U 변환을 끝냄

 \l

 다음에 오는 글자를 소문자로 변환

 \L

 \E를 만날 때까지 모든 문자를 소문자로 변환

 \u

 다음에 오는 글나를 대문자로 변환

 \U

 \E를 만날 때까지 모든 문자를 대문자로 변환

POSIX 문자 클래스

 [:alnum:]

 모든 영숫자 ([a-zA-Z0-9]와 같음)

 [:alpha:]

 모든 영문자 ([a-zA-Z]와 같음)

 [:blank:]

 빈칸(space)이나 탭 문자 ([\t]와 같음)

 [:cntrl:]

 아스키 제어문자(아스키 0번부터 31, 127)

 [:digit:]

 모든 한 자리 숫자 ([0-9]와 같음)

 [:graph:]

 [:print:]와 동일하나 빈칸(space)은 제외

 [:lower:]

 모든 소문자 ([a-z]와 같음)

 [:print:]

 출력 가능한 모든 문자

 [:punct:]

 [:alnum:]이나 [:cntrl:]가 포함되지 않은 모든 문자

 [:space:]

 빈칸을 포함한 모든 공백 문자 ([\f\n\r\t\v]와 같음)

 [:upper:]

 모든 대문자 ([A-Z]와 같음)

 [:xdigit:]

 모든 16진수 숫자 ([a-fA-F0-9]와 같음)

변경자

 (?m)

 다중행 모드

 

 

 



※ 요약
본격적으로 정규표현식을 배우기 전에 소개할 웹사이트가 있다.

RegExr라는 사이트인데, 정규식을 연습하거나 테스트 해볼 수 있고 각 종 레퍼런스도 있어서 공부하기에도 좋다.

무엇보다 좋은 점은 인터넷만 연결되어 있다면 어디에서든지 정규식을 테스트 해볼 수 있다는 것인데, 이는 필자가 예제를 작성하면 독자는 따라서 해보기 아주 좋은 환경을 제공해준다.


※ 사이트 주소


※ 소개

아래 화면은 Regexr에 처음 접속하면 나오는 화면인데, 샘플 예문과 간단한 정규표현식이 미리 입력되어 있다.

앞으로 필자가 아래 예문으로 정규식을 완성하면 독자가 따라하는 방식으로 포스팅을 진행할 예정이다.

 

 


 

※ 소개

정규표현식은 영문으로 Regular Expressions라고 표기하며 보통 정규식 혹은 Regex(레젝스)라고 부른다.

정규식은 모든 종류의 텍스트를 조작하고 처리하기 위해 만들어졌으며, 거의 모든 언어와 플랫폼에서 지원한다.

막연히 텍스트를 조작하고 처리한다고 하여 감이 잘 안올텐데 일단은 문자열의 검색치환을 위한 용도로 쓰이며, 이 작업들을 할때 정규표현식을 이용하면 (상대적으로)간단하게 처리할 수 있다는 것만 알아두자.

정규표현식은 정규 표현 언어를 사용해 만들며 정규 표현 언어에 대해서는 다음 포스팅부터 알아볼것이다.


※ 정규표현식을 사용해야 할 때

- 문자열에서 특정 문자 혹은 특정 문자열을 검색해야 할 때

- 문자열에서 특정 문자 혹은 특정 문자열을 치환해야 할 때


※ 장점
- 문자열에서 검색과 치환을 할 때 정규식을 이용하면 간단하게 작업할 수 있다.

- Modern C++, C#, Java, php, Perl 등등 많은 언어들이 지원한다.


※ 단점
- 문법이 직관적이지 못하고 모르는 상태에서 보면 복잡해보인다.
- 언어마다 정규표현식 문법이 조금씩 다르다.

 

※ 활용
필자는 보통 아래와 같은 상황때 정규표현식을 활용한다.

- 텍스트 파일이나 각 종 문서에서 특정 패턴을 검색할때

- Modern C++로 개발하다가 문자열 검색 및 조작이 필요할때

- 리눅스 명령어 grep을 사용할때

 

 


 

 

※ 요약
윈도우 환경에 OpenSSL 개발 환경을 구축하는 방법이다.

OpenSSL은 보안 및 암호화와 관련된 라이브러리인 만큼 최신 버전으로 개발 환경을 구축하기 바란다.

 

--16년 02월 04일 내용 추가--

찾아보니 미리 컴파일 해놓은 사이트도 있다.

OpenSSL말고도 boost등 다른 라이브러리도 있으니 필요한게 있으면 찾아보기 바란다.

http://www.npcglib.org/~stathis/blog/precompiled-openssl/



※ 다운로드 및 설치 방법

먼저 다운로드를 받아야 하는데, 32비트나 64비트 중 필요한 것을 다운로드 받는다.

 

Next 버튼을 누른다.

 

동의하고 계속 진행한다.

 

설치할 디렉토리를 지정해준다.

 

 

OpenSSL DLL들을 어디에 복사할거냐고 묻는데, 본인이 필요한 곳에 하면 된다.

보통 windows system 디렉토리에 해도 되지만, 필자는 필요한 프로젝트에만 가져다 쓰기 위해 아래 항목을 선택하였다.

 

설치를 진행한다.

 

 

완료 버튼을 눌러 설치를 완료한다.

 

설치가 완료되었고, 설치 때 지정한 경로에 와보니 필요한 것들이 다 있다.

먼저 root폴더와 (설치때 bin에 DLL을 복사한다고 한 경우)bin폴더에는 DLL들이 위치해 있고 include에는 헤더 파일들이, lib에는 library파일들이 위치해 있다. 이제 이것들을 프로젝트에 포함해서 사용하면 된다.

 

+ Recent posts