안녕하세요. 이번 시간에는 앞시간에서 다룬 모듈을 사용해서 인터넷(웹) 상에서 이미지(사진)을 다운로드 해 보겠습니다. 그 까지것 직접 다운하면 되지 않냐? 할 수도 있겠으나, 우리는 호모 사피엔스( 생각하는 인간 ) 이지 않습니까! 번거로운 일은 컴퓨터가 알아서 하게 시키자는 취지입니다. 당연히 다운로드 해야할 양이 많아지면 귀차니즘이 발동 되니, 그 일을 컴퓨터에게 양보(?) 하는게 현명할 것입니다. 각설하고 시작하겠습니다.
앞에서 다룬 random 모듈을 불러들입니다.
파이썬 내장 모듈(함수)인 urllib를 불러들이는데, 그 중 request를 호출하였습니다. 우리가 웹브라우저(chrome, firefox, safari, internet explore, opera etc.)를 이용하여 인터넷을 서핑하는데, 이 때 각각의 웹사이트를 방문하게 되죠. 이 때 주소(address) 창에 넣는 url을 넣는데, 이 url을 이용하여 할 수 있는 일들을 모아둔 모듈이 바로 이것입니다.
그럼 이 모듈을 이용해서 함수를 정의하겠습니다. 위 코드처럼 이미지 다운할 함수명을 정의하고 필요한 parameter는 url을 받게 하였습니다.
그리고 이미지(사진)을 받았을 때 사용할 이름을 정할건데, 앞 시간에서 다룬 1에서 1000까지 숫자중 임의의 값을 정해 name 이라는 변수에 저장하였습니다.
그리고 확장자(extension)까지 붙여서 Full_name을 정하여 주었습니다. 여기서 중간에 str(name) 이라고 되어 있는데, 이는 name 변수는 정수(integer)형이고 뒤의 ".jpg"는 문자형이기에, 서로 다른 문자형을 합치면 에러가 발생합니다. 그래서 숫자를 문자로 인식하라고, string() 으로 전환(convert)한 것입니다. 그럼 full_name 은 문자만 저장된 문자형 변수가 될 것입니다.
이번에는 위에서 불러온 urllib.request 를 사용할 것입니다. 이 모듈안에는 url 주소에 있는 파일을 다운할 수 있게 이미 만들어 놓은 함수가 들어 있습니다. 그것이 바로 'urlretrieve' 라고 하는 것입니다. 이 함수(메소드)는 첫번째 parameter로 url을 받습니다. 두번째 parameter 로 명명해줄 파일의 이름을 받습니다.
이제 어떤 이미지(사진)를 받을지 찾아봐야겠죠? 수 많은 사이트에 헤아릴 수 없는 이미지들이 있겠지만, 그냥 다음 로고로 예를 대체하려고 합니다. 다음 홈페이지에 방문하여 오른쪽 클릭을 하면, 'Copy Image Address'라고 있습니다. 아래 그림을 먼저 보시면서 이어 가겠습니다.
위에서 Copy Image Address 를 클릭하면 다음 로고가 있는 url을 클립보드에 복사를 하게 됩니다. 지금 사용하는 시스템은 맥이기에 위와 같이 나옵니다. 윈도우는 한 동안 사용을 안해서 어떻게 나오는지 가물가물하지만 이미지 주소를 얻는데는 어렵지 않을 것입니다.
이렇게 클립보드에 복사된 url 을 위와 같이 함수를 호출하고 그 안에 문자열 형태 (' ') 로 넣어줍니다. 위의 코드를 실행하면 없던 이미지 파일이 왼쪽 네비게이션 바에 나타날 것입니다. 왼쪽 스크롤 부분을 보시면 어떠한 jpg 파일도 현재는 없는 것을 확인하실수 있을 것입니다.
이제 실행을 해보니, 실행이 끝났다고 알려주고 왼쪽에 969.jpg 파일이 생성된 것을 확인할 수 있습니다. 제대로 다운이 되었는지 클릭해 보겠습니다.
네. 위 그림처럼 다음 로고가 "나 여기있다~"라고 짜잔 나타나는군요. 비단 1개의 이미지 파일이지만, 기본적으로 어떻게 하는지는 익히셨으리라 봅니다. 여기까지 입니다. 수고하셨습니다.
'Programming > Python Tutorials' 카테고리의 다른 글
[PYTHON 3] Tutorials 23. Downloading Files from the web - 파일 다운로드 하기 using 파이썬 (10) | 2015.11.27 |
---|---|
[PYTHON 3] Tutorials 22. How to read and write Files - 파이썬에서 파일 읽고 쓰기 (0) | 2015.11.25 |
[PYTHON 3] Tutorials 20. Modules(모듈화) (0) | 2015.11.25 |
[PYTHON 3] Tutorials 19. Dictionary (0) | 2015.11.24 |
[PYTHON 3] Tutorials 18. Sets(중복제거) (2) | 2015.11.24 |