본문 바로가기

Python/Crawling

[Python웹크롤링] urllib 모듈로 image, html 다운로드

반응형

12월 말 종강 후 부터 우리의 자랑스러운 DSC SCH Lead인 나단이가 패스트캠퍼스 강의를 빌려주어서 파이썬 문법과

웹 크롤링에 대한 강의를 들어왔다. 그 중에 데이터를 수집하기 위해서는 웹크롤링이 필수적이라고 교수님께서 말씀하셔서 웹 크롤링에 대한 강의를 듣고 이후 복습하고 머리에 저장시키기 위해 블로그에 쓰고자 한다. 우선 현재 웹크롤링

진도가 Selenium 모듈을 쓰는 단계까지 진행되었지만 다시 초심부터 돌아가자는 의미에서 처음부터 진도를 순차적으로

진행하면서 글을 작성하려 한다. 그럼 한 번 복습해보자!

 

모듈 import

우선 내가 갖고오고자 하는 URL에서 제공하는 이미지와 HTML을 갖고오기 위해선 해당 URL에다가 요청(request)을 

해야 한다. (쉽게 일상적인 예시를 들어본다면, 대학교에서 수업을 듣는데 펜이 없다면, 옆자리 학생의 펜을 빌리기 위해서는 무작정 옆자리 학생의 펜을 냅다 뺏을 것인가? 아니다. 우선 '너의 펜을 써도 되니' 라고 요청을 해야한다! ) 

 

그래서 urllib 라이브러리의 request 모듈을 req 라고 간단하게 정의함으로써 import 한다. 

(여기서 req로 정의하는 이유는 단순하다... 사람은 무엇인가 길어지면 귀찮아 하기 때문이다...)

 

해당 URL과 다운받을 경로 설정

 

자, 이제 상대방에게 요청을 했다. 그럼 이제 무엇을 요청하고 싶은지와 요청을 한 걸 받았다면! 그것들을 내 컴퓨터의 어디 위치에다가 저장할지를 설정해야 한다. 

위 코드는 바로 그것들을 설정한 코드이다. 

 

예외 처리 코드

이 세상에 모든 규칙엔 항상 예외가 있는 법이다. 컴퓨터 세상에서도 똑같다. 

즉, 내가 가져오고 싶은 사진이나 HTML을 갖고오면서 오류가 발생한다면 왜 오류가 발생했는지를 알려주어야 한다.

그럼 코드를 보면서 순차적으로 코드의 의미를 알아보자

  • try : req.urlretrieve 모듈은 데이터를 저장할 때 쓰는 모듈이다. 따라서 2번째 사진에서 작성했던 코드에서 해당 파일의 url과 저장경로를 할당해줌으로써 내 컴퓨터의 특정 위치에 저장시킨다
  • except  Exception as e : 본격적인 예외처리이다. 예외가 발생하면 Download failed 라는 문자열이 출력될 것이며  왜 출력되었는지에 대해서도 출력된다.
  • else : 예외처리가 되지 않을시 원래 목적대로 저장하게 된다. 순처적으로 저장경로와 파일이름을 출력하고 마지막엔 센스 있게 다운로드가 성공했다는 Download Succeed 문구를 출력해준다!

다음엔 lxml 과 css선택자를 이용해서 특정 뉴스거리를 스크래핑 해온 강의에 대해서 복습을 할 예정이다.

내 기억상 이 부분부터 정말 개인적으로 어려웠지만 css선택자에 대해서 궁금해서 약간의 html강의도 듣게 만들었던

공부를 더하게 해준... 괜찮은(?) 학습내용이였다..

반응형