# 폴더 존재 여부 확인하는 함수
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
반응형
'크롤링' 카테고리의 다른 글
크롤링_쇼핑몰 상품 데이터 수집 (4) | 2022.07.01 |
---|---|
크롤링_유튜브 데이터 수집 (0) | 2022.06.30 |
크롤링_Selenium (0) | 2022.06.30 |
크롤링_워드클라우드 그리기 (0) | 2022.06.30 |
크롤링_네이버 영화 리뷰 수집(실습) (0) | 2022.06.28 |