이근둥
근둥이의 블로그
이근둥
전체 방문자
910,179
오늘
319
어제
625

공지사항

  • 전체보기 (110)
    • 웹 (9)
    • 언어 & 프레임워크 (53)
      • JavaScript (7)
      • TypeScript (0)
      • Node.js (11)
      • Vue.js (3)
      • React (0)
      • React Native (0)
      • C & C++ (19)
      • Java & JSP (9)
      • Python (4)
    • 컴퓨터 과학 (3)
      • 알고리즘 (0)
      • 자료구조 (3)
    • 기타 (9)
      • Linux (1)
      • Git (2)
      • DialogFlow (4)
    • 일상 (13)
      • 게임 (13)
    • 칼럼 (11)
      • 회고 (2)
      • 나만의 글 (0)
      • 제품 리뷰 (9)
    • __Dev__ (9)
      • Release (9)
반응형

인기 글

  • 웹 푸시 알림(Web Push Notification)
    2022.06.13
    웹 푸시 알림(Web Push Notification)
  • [C/C++] 콘솔게임 프로그래밍 (1) - 프로젝트 생성⋯
    2017.12.19
    [C/C++] 콘솔게임 프로그래밍 (1) - 프로젝트 생성⋯
  • [Node.js] 실시간 채팅 서비스 만들기(5) - 채팅⋯
    2018.05.31
    [Node.js] 실시간 채팅 서비스 만들기(5) - 채팅⋯
  • [C/C++] 콘솔게임 프로그래밍 (2) - 메뉴 선택기능
    2017.12.19
    [C/C++] 콘솔게임 프로그래밍 (2) - 메뉴 선택기능
  • [Tomcat] 아파치 톰캣 서버 포트 변경하기
    2018.08.24
    [Tomcat] 아파치 톰캣 서버 포트 변경하기

태그

  • 자바 프로젝트
  • 성장
  • WWDC20
  • composition-api
  • 이클립스
  • Up
  • java
  • 출간
  • vue
  • 프로그레시브 웹 앱
  • pwa
  • vue-next
  • Composition API
  • 사이드 프로젝트
  • WWDC
  • javascript
  • vue.js
  • Java FX
  • vuex
  • spread syntax
  • Vue 3
  • 자바
  • 회고
  • AstroWar
  • Deemo
  • 전개 구문
  • 자기계발
  • 웹 확장
  • vue3
  • ES6

최근 댓글

  • 말씀해주신 책 사려고 하는데요, 환경 설치부터 자세하게 습⋯
    신기준
  • 늦게 답변드려 죄송합니다. iOS Safari 의 경우 웹⋯
    이근둥
  • 안녕하세요 혹시 전체 방문자는 어떻게 구현하셨나요?
    jj123
  • 안녕하세요. 아래 익명 댓글 작성자인데 암호를 잘못 입력했⋯
    이재원
  • 선생님 잘배우고 있습니다. 저는 LINUX 환경에서 작⋯
    전마머꼬

최근 글

  • Up 개발기 그리고 회고 - 3
    2023.05.31
    Up 개발기 그리고 회고 - 3
  • Up 개발기 그리고 회고 - 2
    2023.05.31
    Up 개발기 그리고 회고 - 2
  • Up 개발기 그리고 회고 - 1
    2023.05.31
    Up 개발기 그리고 회고 - 1
  • 웹 푸시 알림(Web Push Notification)
    2022.06.13
    웹 푸시 알림(Web Push Notification)
  • 스택(Stack)
    2022.05.26
    스택(Stack)

블로그 메뉴

  • 홈
  • 미디어로그
  • 방명록
hELLO · Designed By 정상우.
이근둥

근둥이의 블로그

[Python] 이미지 크롤링하기[3] - 추가기능
언어 & 프레임워크/Python

[Python] 이미지 크롤링하기[3] - 추가기능

2018. 4. 5. 15:25
반응형

안녕하세요



이번 포스팅에서는 지난시간에 완성한 크롤러에 추가기능을 구현해보도록 할 예정입니다.



제가 본 포스팅에서 구현해볼 추가기능은


- 이미지 수 입력

- 크롤링 소요 시간

- 이미지 중복 체크


2가지입니다.



필요한 모듈이 있긴한데 모두 파이썬 내장 모듈이므로 따로 설치하지 않으셔도 됩니다.




소스코드 맨 아래에 get 함수 전 num 변수를 선언하고

input 함수로 값을 입력받도록 합시다.


int() 함수로 입력받은 값을 숫자형태로 변환한 후 저장해야합니다








크롤링 소요시간, 파일 중복확인을 위해

아래 time, os 모듈을 import 해줍니다.






get 함수의 첫 번째 행에 크롤링 시작 시간을 저장합니다.


저는 변수이름을 start로 선언하였습니다.



그리고 while~ else 의 마지막에 빨간색으로 표시한 부분을 추가합니다.


time.time() 은 현재 시간값을 반환하는데

크롤링 종료 시점의 시간에서 크롤링 시작시간을 빼면 


얼마나 시간이 경과했는지 알 수 있습니다.


소수점을 6자리까지 표현하기 위해 round 함수를 사용하였습니다.






마지막으로 파일 중복체크를 구현해봅시다.


저는 duplicate 하는 함수를 하나 구현했습니다.


os.path.exists() 함수에 파일의 경로를 입력하면


해당 파일이 존재하는지, 없는지 확인할 수 있습니다.


존재할 경우 True,

존재하지 않으면 False를 반환합니다.




중간에 조건문을 통해 중복되지 않았을 경우에만 파일을 다운받도록 코드를 작성해줍니다.


만약 파일이 이미 존재하면 중복된 이미지가 있다고 알려주도록 print 함수로 출력하였습니다.









실행결과





10000img.zip





한번 테스트로 1000개의 이미지를 다운받아보았습니다.



와이파이로 진행했는데 대략 2분 조금 넘게 진행되었네요..

(인터넷 상태, 서버 상태에 따라 유동적으로 바뀔 수 있음)




중복된 이미지를 제외하고 다운받아서

1000개의 이미지 다운로드 요청 중 850개가 다운받아졌습니다







한번 여러분들도 테스트해보세요!







이상으로 추가기능에 대한 강좌를 마치겠습니다.


다음 강좌에서는 멀티프로세싱 모듈을 이용하여 속도개선을 해보도록 하겠습니다.

(병렬처리)




궁금하신 내용이 있으면 댓글로 물어보셔도 됩니다




감사합니다.


반응형
저작자표시 비영리 동일조건
    '언어 & 프레임워크/Python' 카테고리의 다른 글
    • [Python] 이미지 크롤링하기[4] - 병렬처리
    • [Python] 이미지 크롤링하기[2] - 구현
    • [Python] 이미지 크롤링하기[1] - 분석
    이근둥
    이근둥
    새로운 것을 좋아하는 프론트엔드 개발자 ✨
    댓글쓰기

    티스토리툴바