인프런 커뮤니티 질문&답변
img. click()
작성
·
476
1
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에러도 안 납니다.
답변 3
0
네이버 이미지 크롤링 소스를 봤는데
Service 를 사용할 때 문제가 있는 것 같네요 ㅎㅎ
아래와 같이 사용해 주셔야 합니다.
1. Service 클래스를 import 해줘야 합니다.
2. 크롬 드라이버의 경로는 \(역슬래시)가 아닌 /(슬래시)로 구분해 줘야 합니다.
(역슬래시는 문자열에서 이스케이프 문자를 만드는데 사용하는 기호 입니다)
0
답변을 주셨는데 잘 안보였군요.
네이버 이미지의 경우
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값으로 출력해줌
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")
# 무한 스크롤 - 반복문
while True:
# 맨 아래로 스크롤을 내린다.
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):
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)
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):
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에러도 안 납니다.
0
안녕하세요 ^^
코드 개행이 안되어서 문제를 파악하기 힘듭니다 ㅠㅠ
VS Code 에서 코드를 복사 한 후 그대로 붙여 넣으면
아래와 같이 잘 보입니다.
만약 잘 안된다면 스크린샷으로라도 첨부 부탁드립니다 ^^





