안녕하세요
이번 포스팅에서는 지난시간에 완성한 크롤러에 추가기능을 구현해보도록 할 예정입니다.
제가 본 포스팅에서 구현해볼 추가기능은
- 이미지 수 입력
- 크롤링 소요 시간
- 이미지 중복 체크
2가지입니다.
필요한 모듈이 있긴한데 모두 파이썬 내장 모듈이므로 따로 설치하지 않으셔도 됩니다.
소스코드 맨 아래에 get 함수 전 num 변수를 선언하고
input 함수로 값을 입력받도록 합시다.
int() 함수로 입력받은 값을 숫자형태로 변환한 후 저장해야합니다
크롤링 소요시간, 파일 중복확인을 위해
아래 time, os 모듈을 import 해줍니다.
get 함수의 첫 번째 행에 크롤링 시작 시간을 저장합니다.
저는 변수이름을 start로 선언하였습니다.
그리고 while~ else 의 마지막에 빨간색으로 표시한 부분을 추가합니다.
time.time() 은 현재 시간값을 반환하는데
크롤링 종료 시점의 시간에서 크롤링 시작시간을 빼면
얼마나 시간이 경과했는지 알 수 있습니다.
소수점을 6자리까지 표현하기 위해 round 함수를 사용하였습니다.
마지막으로 파일 중복체크를 구현해봅시다.
저는 duplicate 하는 함수를 하나 구현했습니다.
os.path.exists() 함수에 파일의 경로를 입력하면
해당 파일이 존재하는지, 없는지 확인할 수 있습니다.
존재할 경우 True,
존재하지 않으면 False를 반환합니다.
중간에 조건문을 통해 중복되지 않았을 경우에만 파일을 다운받도록 코드를 작성해줍니다.
만약 파일이 이미 존재하면 중복된 이미지가 있다고 알려주도록 print 함수로 출력하였습니다.
실행결과
한번 테스트로 1000개의 이미지를 다운받아보았습니다.
와이파이로 진행했는데 대략 2분 조금 넘게 진행되었네요..
(인터넷 상태, 서버 상태에 따라 유동적으로 바뀔 수 있음)
중복된 이미지를 제외하고 다운받아서
1000개의 이미지 다운로드 요청 중 850개가 다운받아졌습니다
한번 여러분들도 테스트해보세요!
이상으로 추가기능에 대한 강좌를 마치겠습니다.
다음 강좌에서는 멀티프로세싱 모듈을 이용하여 속도개선을 해보도록 하겠습니다.
(병렬처리)
궁금하신 내용이 있으면 댓글로 물어보셔도 됩니다
감사합니다.