새소식

반응형
Python/자동화

(파이썬 웹크롤링) 이미지 창고의 이미지들을 크롤링 해보자!(feat.길호넷)

  • -
반응형

자신의 이미지를 업로드하여 url로 만들고 타인과 쉽게 공유할 수 있는 사이트가 있습니다. 근데 다른 사람들은 어떤 사진들을 올리는지 궁금하기도 합니다 ㅋㅋ 하나하나 검색해 보지 말고 한번 크롤링 해봅시다.

단순한 호기심에 파이썬 자동화 스크립트를 만들어봤는데 이미지 수집이 잘 되더군요.

여러분도 너무 코딩으로 정직한 프로그램만 만들지 만들고 한 번씩 이런 이상한 호기심도 채워보고 즐겨보시는 걸 권장 드립니다.

 

https://image.kilho.net/

 

이미지창고

이미지 파일을 서버에 업로드하고 공유하세요. 특징 회원가입 필요 없이 공유할 이미지를 올리시면 됩니다. 완전 공짜로 사용하실 수 있습니다. 생성된 단축주소를 이용해 주변 친구들에게 쉽

image.kilho.net

 

위의 사이트에 들어가면 공유할 이미지를 업로드하라고 나옵니다.

이미지창고 공유할 사진 찾기

 

공유할 사진 찾기 클릭하고 사진을 업로드 합니다.

 

이미지 업로드 후 공유 사진 주소

 

그럼 위의 주소가 생기는데 여기서 규칙이 있습니다. 

 

imgdb.in/IKVb라는 주소에서 imgdb.in/IKVa, imgdb.in/IKVb, imgdb.in/IKVc.... 등 뒤에 a, b, c, ...0, 1, 2 이렇게 알파벳과 숫자의 조합으로 주소가 생깁니다. 

 

따라서 다른 주소를 그냥 뒤에 문자 조합만 바꾸면 다른 이미지들의 수집이 가능하다는 것입니다.

 

이제 코드부터 한번 보겠습니다.

반응형
import ssl
ssl._create_default_https_context = ssl._create_unverified_context
from selenium import webdriver
from selenium.webdriver.common.by import By
import urllib.request

driver = webdriver.Chrome()

# 처음 두자리 이미지 키값
searchKey = "IK"

# 뒤에 두자리 키값들
textArrThird = ['A', 'B', 'C','D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'W', 'Y', 'Z']
textArrFourth = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l',
           'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'w', 'y', 'z']

for third in textArrThird:
    for fourth in textArrFourth:
        try:
            key = f'{searchKey}{third}{fourth}'  # 키값 조합
            url = f"https://imgdb.in/{key}"  # 생성 url
            print('url:',url)
            driver.get(url)
            imgUrl = driver.find_element(By.XPATH, '/html/body/div[2]/div/img').get_attribute("src")
            opener = urllib.request.build_opener()
            opener.addheaders = [
                ('User-Agent',
                 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1941.0 Safari/537.36')
            ]
            urllib.request.install_opener(opener)
            # 이미지 저장
            urllib.request.urlretrieve(imgUrl, f'./imgs/{key}_{fourth}.jpg')
        except:
            pass

driver.close()
print('done')

 

searchKey에 url 뒤 4글자에서 앞에 두 자리를 넣습니다. 예를 들어 imgdb.in/lKVb에서 lK를 넣습니다.

나머지 키값들은 textArrThird와 textArrFourth에 리스트로 작성합니다.

 

저는 그냥 재미로 빠르게 한번 긁어보자는 목적으로 대충 생각나는 데로 알파벳 넣었으니 나머지 더 나은 로직은 필요하시다면 알아서 개선하시면 되겠습니다.

 

참고로 사용한 패키지 정보는 다음과 같습니다.

사용한 패키지 리스트

 

본인의 패키지 리스트 확인하는 방법은 다음 글을 참고해주세요

2023.02.23 - [Python/환경 설정] - 파이썬 현재 설치된 패키지 리스트 확인하는법

 

파이썬 현재 설치된 패키지 리스트 확인하는법

Python에서 현재 설치된 패키지 리스트를 확인하는 방법에는 여러 가지가 있습니다. pip list 명령어 사용하기 가장 쉬운 방법은 터미널에서 pip list 명령어를 실행하는 것입니다. 이 명령어는 현재

intelloper.tistory.com

 

 

자 이제 패키지도 다운 받고 실행해보면 수집이 아주 잘되는것을 볼 수 있습니다.

 

이미지 수집중

수집 화면이 뜹니다.

 

이미지 수집중인 url들

url을 차례데로 검색하면서 프린트를 찍어냅니다.

 

수집완료시 폴더에 저장된 이미지들

 

최종적으로 수집이 완료되면 imgs 폴더에 이미지들이 저장되어있는걸 확인할 수 있습니다.

 

2024.3.21 정상작동 확인

반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.