Eggs Sunny Side Up
본문 바로가기
Web/Crawling

네이버 이미지 데이터 수집

by guswn100059 2023. 4. 13.
from selenium import webdriver as wb
# 웹브라우저를 통제하기 위한 라이브러리

from selenium.webdriver.common.keys import Keys
# 웹에게 값을 입력받기 위한 라이브러리

from selenium.webdriver.common.by import By
# html 문서에서 태그와 선택자를 찾기 위한 라이브러리

from bs4 import BeautifulSoup as bs
# 컴퓨터가 이해하기 쉬운 객체로 변환해주는 라이브러리

import time
# 코딩 중간에 쉬는시간을 부여해주는 라이브러리

import os
# 운영체제에서 제공되는 여러 기능을 파이썬에서 사용할 수 있게 해주는 라이브러리

from urllib.request import urlretrieve
# 이미지 경로를 이미지 파일로 바꿔주는 라이브러리
driver = wb.Chrome()
driver.get('https://www.naver.com/')
btn = driver.find_element(By.ID, 'query')
# btn.send_keys('숙성도') -> 수동적인 코드
search_name = input("검색어를 입력하세요 >>")
btn.send_keys(search_name)
btn.send_keys(Keys.ENTER)
# 바탕화면에 검색어를 이름으로 하는 파일을 생성하기
if not os.path.isdir(f"C:\\Users\\smhrd\\Desktop/{search_name}") :
    os.mkdir(f"C:\\Users\\smhrd\\Desktop/{search_name}")
    print("폴더가 생성되었습니다.")
else :
    print("이미 생성된 파일입니다.")
btn = driver.find_elements(By.CLASS_NAME, 'tab')[1]
btn.send_keys(Keys.ENTER)
soup = bs(driver.page_source, 'lxml')
img = soup.select('img._image._listImage')
img[0]['src']
img_list = []
for i in img :
    img_list.append(i['src'])
for i in range(len(img_list)) :
    urlretrieve(img_list[i], f'C:\\Users\\smhrd\\Desktop/{search_name}/{i+1}번째 꼬기.jpg')

 

종합_데이터 정제 방법 1)

# 바탕화면에 검색어를 이름으로 하는 파일을 생성하기
if not os.path.isdir(f'C:\\Users\\smhrd\\Desktop/{search_name}') :
    os.mkdir(f'C:\\Users\\smhrd\\Desktop/{search_name}')
    print("폴더가 생성되었습니다.")
else :
    print("이미 생성된 파일입니다.")

driver = wb.Chrome()
driver.get('https://www.naver.com/')

btn = driver.find_element(By.ID, 'query')

search_name = input("검색어를 입력하세요 >> ")
btn.send_keys(search_name)
btn.send_keys(Keys.ENTER)

# btn = driver.find_elements(By.CLASS_NAME, 'tab')[1]
# btn.send_keys(Keys.ENTER)
driver.find_elements(By.CLASS_NAME, 'tab')[1].click() # '이미지' 탭 클릭
time.sleep(2)

btn = driver.find_element(By.TAG_NAME, 'body')

for i in range(5) : # 스크롤 5번 내리기
    btn.send_keys(Keys.END)
    time.sleep(2)
    
soup = bs(driver.page_source, 'lxml')
img = soup.select('img._image._listImage')

# 1번째 방법 : 데이터 정제(빼고 수집)
# data ~~로 시작하는 데이터 지워보기
img_list = []
for i in img :
    if 'data' not in i['src'][:4] : # i['src'][:4] != 'data'
        img_list.append(i['src']) 

for k in range(len(img_list)) :
    urlretrieve(img_list[k], f'C:\\Users\\smhrd\\Desktop/{search_name}/{k+1}번째 꼬기.jpg')
    # 리스트에 있는 src 경로값을 이미지 파일로 변환해서 저장

 

종합_데이터 정제 방법 2)

# 바탕화면에 검색어를 이름으로 하는 파일을 생성하기
if not os.path.isdir(f'C:\\Users\\smhrd\\Desktop/{search_name}') :
    os.mkdir(f'C:\\Users\\smhrd\\Desktop/{search_name}')
    print("폴더가 생성되었습니다.")
else :
    print("이미 생성된 파일입니다.")

driver = wb.Chrome()
driver.get('https://www.naver.com/')

btn = driver.find_element(By.ID, 'query')

search_name = input("검색어를 입력하세요 >> ")
btn.send_keys(search_name)
btn.send_keys(Keys.ENTER)

# btn = driver.find_elements(By.CLASS_NAME, 'tab')[1]
# btn.send_keys(Keys.ENTER)
driver.find_elements(By.CLASS_NAME, 'tab')[1].click() # '이미지' 탭 클릭
time.sleep(2)

btn = driver.find_element(By.TAG_NAME, 'body')

for i in range(5) : # 스크롤 5번 내리기
    btn.send_keys(Keys.END)
    time.sleep(2)
    
soup = bs(driver.page_source, 'lxml')
    
# 2번째 방법 : data로 수집되는 이유를 한 번 알아보고 그것도 같이 출력
# bs객체화를 통해 가져온 정보는 정적인 정보
# 동적인 정보를 가져오면 해결될 수 있다.
img_list2 = []
img2 = driver.find_elements(By.CLASS_NAME, '_image._listImage')
for j in img2:
    img_list2.append(j.get_attribute('src')) # 이미지 태그의 src 값을 추출해서 리스트에 담아주기
    

for k in range(len(img_list)) :
    urlretrieve(img_list[k], f'C:\\Users\\smhrd\\Desktop/{search_name}/{k+1}번째 꼬기.jpg')
    # 리스트에 있는 src 경로값을 이미지 파일로 변환해서 저장

'Web > Crawling' 카테고리의 다른 글

크롤링 시험  (0) 2023.04.13
포켓몬 이미지 데이터 수집  (0) 2023.04.12
Gmarket 상품정보 수집  (0) 2023.04.10
한솥도시락 data 크롤링  (0) 2023.04.09
selenium 라이브러리  (0) 2023.04.09

댓글