img. click()
488
작성한 질문수 5
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 에서 코드를 복사 한 후 그대로 붙여 넣으면
아래와 같이 잘 보입니다.
만약 잘 안된다면 스크린샷으로라도 첨부 부탁드립니다 ^^
셀레니움 환경설정 오류
0
46
2
네이버 로그인 관련
0
257
2
안녕하세요 셀레니움에 대해서 질문
0
85
1
크롤링 연습사이트 문의
0
96
2
선택자 질문
0
71
2
'특정 요소가 나타날 때까지 스크롤' 부분 에러
0
76
2
자동 로그인 질문
0
87
2
44강 제목, 링크
0
105
1
원하는 값이 없을 때
0
89
2
크롤링한 링크가 엑셀로 들어가면 작동이 안되요
0
227
2
셀레니움 PDF자료는 받을 수 있나요
0
100
2
글목록 추출하기
0
97
2
메일 자동화 로그인 중복방지문자해결 오류 및 명시적 대기 질문
0
88
2
강의 노트가 어디에 있는건가요?
0
80
2
강의 커리큘럼 질문
0
98
1
조건문 else 사용하지 않는 이유
0
76
2
셀레니움으로 접근할 수 없는 경우
0
95
2
웹페이지 변경
0
70
2
자바스크립트로 태그 선택 시 질문입니다.
1
64
2
수료증은 어떻게 받나요?
0
120
2
class명을 활용하여 선택자를 만들지 않는 경우..?
0
60
2
드라이버가 안 열려요
0
79
2
이거 해결방법 아시는 분?
0
121
2
네이버 지식인 크롤링..
0
201
2





