크롤링

크롤링_이미지 수집

asu2880 2022. 6. 30. 15:16
# 폴더 존재 여부 확인하는 함수
def createDirectory(name):
    # True : 폴더 있음 / False : 폴더 없음
    # 폴더를 확인하고 생성하는 함수
    if not os.path.isdir(name):
        # 폴더생성
        os.mkdir(name)
dir_name = '최우식'

# 폴더 생성
createDirectory(dir_name)

imgUrl = 'https://blog.kakaocdn.net/dna/eegLhJ/btrlFnnyiDN/AAAAAAAAAAAAAAAAAAAAAMq0bIk9PUalaYbFdte3ewfFlJdyk3ZQuZxpgiKCbP5z/img.jpg?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8&expires=1751295599&allow_ip=&allow_referer=&signature=k4MRTxyu%2BS4xgOTrxTn9F8ZWXQQ%3D'

# urlretrieve(이미지경로, 폴더경로 or 파일명, 확장자)
urlretrieve(imgUrl, f'./{dir_name}/최우식.jpg')

 

 

# 1. 검색 결과 이미지 페이지를 driver 객체로 생성
keyword = "최우식"
url = f'https://search.naver.com/search.naver?where=image&sm=tab_jum&query={keyword}'

driver = wb.Chrome()
driver.get(url)

time.sleep(2)

# 2. 페이지 스크롤
body = driver.find_element(By.TAG_NAME, value='body')

for i in range(5):
    body.send_keys(Keys.END)
    time.sleep(1.5)
    
# 3. 현재 HTML 문서를 파이썬 객체로 변환하고, driver 객체 종료
html = bs(driver.page_source, 'lxml')
driver.close()

# 4. img 요소들을 select()로 수집
imgs = html.select('img._image._listImage')

# 5. 각 요소별로 get(속성이름)를 이용해 이미지 주소 수집
imgList = []

for img in imgs:
    # 이미지 주소에 'data:'이 포함되어 있지 않다면
    if 'data:' not in img.get('src'):
        imgList.append(img.get('src'))
        
# 6. 수집한 이미지 주소를 폴더에 저장(폴더명 : 검색어)
createDirectory(keyword)

save_path = f'./{keyword}/'

for imgUrl in range(len(imgList)):
    urlretrieve(imgList[i], f'{save_path}{keyword}{i+1}.jpg')

 

# 폴더를 생성하는 함수
def createDirectory(name):
    if not os.path.isdir(name):
        # 폴더생성
        os.mkdir(name)
        print(f'{name}폴더가 생성되었습니다.')
    else:
        print(f'{name}폴더는 이미 생성된 폴더입니다.')


# 이미지 주소를 수집하는 함수
def imgCrawling(keyword):
    # 1. 검색 결과 이미지 페이지를 driver 객체로 생성
    url = f'https://search.naver.com/search.naver?where=image&sm=tab_jum&query={keyword}'

    driver = wb.Chrome()
    driver.get(url)

    time.sleep(2)

    # 2. 페이지 스크롤
    body = driver.find_element(By.TAG_NAME, value='body')

    for i in range(5):
        body.send_keys(Keys.END)
        time.sleep(1.5)

    # 3. 현재 HTML 문서를 파이썬 객체로 변환하고, driver 객체 종료
    html = bs(driver.page_source, 'lxml')
    driver.close()

    # 4. img 요소들을 select()로 수집
    imgs = html.select('img._image._listImage')

    # 5. 각 요소별로 get(속성이름)를 이용해 이미지 주소 수집
    imgList = []

    for img in imgs:
        # 이미지 주소에 'data:'이 포함되어 있지 않다면
        if 'data:' not in img.get('src'):
            imgList.append(img.get('src'))
    
    # 수집된 이미지 주소 리스트 반환
    return imgList


# 이미지를 저장하는 함수
def saveImg(keyword, imgList):
    # 6. 수집한 이미지 주소를 폴더에 저장(폴더명 : 검색어)
    createDirectory(keyword)

    save_path = f'./{keyword}/'

    for imgUrl in range(len(imgList)):
        urlretrieve(imgList[i], f'{save_path}{keyword}{i+1}.jpg')
728x90
반응형