- img. click()과 이미지 저장이 안됩니다.
네이버 이미지의 경우
from selenium import webdriver import time from selenium.webdriver.common.keys import Keys import os from selenium.webdriver.common.by import By import urllib.request # 이미지 저장 모듈 keyword = input("검색어 입력 ") url = f"https://search.naver.com/search.naver?sm=tab_hty.top&where=image&query={keyword}" s = Service('D:\programs\chromedriver.exe') browser = webdriver.Chrome(service=s) # 폴더 만들기 if not os.path.exists(f'{keyword}'): # 해당 폴더의 존재여부를 boolean값으로 출력해줌 # not True = False : 해당폴더가 기존에 존재하지 않으면 새 폴더를 만든다! os.mkdir(f'{keyword}') browser.implicitly_wait(5) browser.maximize_window() # 화면크기 최대화 browser.get(url) time.sleep(2) # 무한스크롤 # 스크롤 전 높이 before_h = browser.execute_script("return window.scrollY") #execute_script = 자바스크립트 명령어 실행 # 무한 스크롤 - 반복문 while True: # 맨 아래로 스크롤을 내린다. body = 모든 웹사이트에 존재 # 키보드의 END키 누르면 웹페이지 맨아래로이동 browser.find_element(By.CSS_SELECTOR, "body").send_keys(Keys.END) time.sleep(1) # 스크롤 사이 페이지 로딩시간 after_h = browser.execute_script("return window.scrollY") if after_h == before_h: break before_h = after_h # 스크롤 후 높이가 다르면 before_h를 업데이트 # 이미지 태그 추출 imgs = browser.find_elements(By.CSS_SELECTOR, 'img._image._listImage') for i, img in enumerate(imgs, 1): # enumerate(대상, 시작값) # 이미지 다운을 위해선 태그에있는 이미지의 주소가 필요하다. img_src = img.get_attribute('src') print(i, img_src) # img를 index값의 파일명으로 png파일로 저장 urllib.request.urlretrieve(img_src, f'{keyword}/{i}.png')
이렇게 했는데 이미지 저장이 안됩니다.
구글 이미지는
from selenium import webdriver
import time
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.chrome.service import Service
import os
from selenium.webdriver.common.by import By
import urllib.request
s = Service('D:\programs\chromedriver.exe') browser = webdriver.Chrome(service=s) url = "https://www.google.com/search?q=%EA%B3%A0%EC%96%91%EC%9D%B4&sxsrf=APq-WBsz993sMMBhQOIcEjQ2XF3mjmQK_A:1648550317533&source=lnms&tbm=isch&sa=X&ved=2ahUKEwiHpMjAkOv2AhXCQPUHHZg7AoEQ_AUoAXoECAEQAw&biw=1280&bih=937&dpr=1#imgrc=kaRLNYgN2jiJpM" browser.implicitly_wait(10) #브라우저가 다 열릴때까지 기다림 browser.maximize_window() browser.get(url) before_h = browser.execute_script("return window.scrollY") while 1: #맨 아래로 스크롤을 내린다. browser.find_element(By.CSS_SELECTOR, "body").send_keys(Keys.END)#END는 스크롤을 제일 아래로 내일 수 있다. time.sleep(1) after_h = browser.execute_script("return window.scrollY") if after_h == before_h: break befor_h = after_h
if not os.path.exists('./고양이'): os.mkdir("./고양이") cats = browser.find_elements(By.CSS_SELECTOR,".rg_i.Q4LuWd") for i, cat in enumerate(cats, 1): #각 이미지 테그의 주소추출 #src의 속성값을 가져온다. cat.click() time.sleep(1) big_img = browser.find_elements(By.CSS_SELECTOR,"img.n3VNCb") big_img_src = big_img.get_attribute("src") print(i, big_img_src) urllib.request.urlretrieve(big_img_src,f"./고양이/{i}.png")
이렇게 했는데 이미지 저장도 안되고 404에러도 안 납니다.
무엇이 문제일까요?