IndexError: list index out of range 오류가 뜹니다.
1084
작성한 질문수 6
똑같이 적어서 실행을 했는데, 제 컴퓨터에선
IndexError Traceback (most recent call last) c:\windows\temp/ipykernel_99852/1573255598.py in <module> 66 # 큰 이미지 주소 추출 67 if i == 1: ---> 68 target = browser.find_elements_by_css_selector("img.n3VNCb")[0] 69 else: 70 target = browser.find_elements_by_css_selector("img.n3VNCb")[1] IndexError: list index out of range
이렇게 계속 에러가 뜹니다.. 뭐가 잘못된 걸까요?
------------------------------------------------------
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
import os
import urllib.request
import pyautogui
keyword = pyautogui.prompt("검색어를 입력하세요>>>")
if not os.path.exists(f'{keyword}'):
os.mkdir(f'{keyword}')
url=f"https://www.google.com/search?q={keyword}&rlz=1C1ASRM_enKR736KR736&sxsrf=APq-WBsr3Zy2hTZpd5_ruEiKeetlCYhZUw:1644073269541&source=lnms&tbm=isch&sa=X&ved=2ahUKEwiAstyZ6uj1AhVSZ94KHbp4DjwQ_AUoAXoECAEQAw&biw=1920&bih=979&dpr=1"
browser=webdriver.Chrome("D:/python/chromedriver.exe")
browser.implicitly_wait(10)
browser.maximize_window()
browser.get(url)
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
imgs = browser.find_elements_by_css_selector(".rg_i.Q4LuWd")
i=1
for i, img in enumerate(imgs, 1):
browser.execute_script("arguments[0].click();",img)
img.click()
time.sleep(1)
if i == 1:
target = browser.find_elements_by_css_selector("img.n3VNCb")[0]
else:
target = browser.find_elements_by_css_selector("img.n3VNCb")[1]
img_src = target.get_attribute('src')
# 이미지 다운로드
# 크롤링 하다보면 http error 403 이 발생함
opener = urllib.request.build_opener()
opener.addheaders = [('User-agent', 'Mozila/5.0')]
urllib.request.install_opener(opener)
i = i+1
urllib.request.urlretrieve(img_src,f'{keyword}/{i}.png')
답변 1
0
안녕하세요.
코딩을 가장 쉽게 알려주는 크리에이터 스타트코딩입니다.
browser.execute_script("arguments[0].click();",img)
img.click()
time.sleep(1)
여기서 오류가 있습니다.
자바스크립트로 img를 찾아서 클릭을 했는데, 또다시 img.click()을 하고 있죠.
img.click()을 빼주니 정상적으로 동작합니다.
감사합니다.
- 스타트코딩 드림.
셀레니움 환경설정 오류
0
73
2
네이버 로그인 관련
0
325
2
안녕하세요 셀레니움에 대해서 질문
0
102
1
크롤링 연습사이트 문의
0
120
2
선택자 질문
0
89
2
'특정 요소가 나타날 때까지 스크롤' 부분 에러
0
89
2
자동 로그인 질문
0
106
2
44강 제목, 링크
0
112
1
원하는 값이 없을 때
0
102
2
크롤링한 링크가 엑셀로 들어가면 작동이 안되요
0
245
2
셀레니움 PDF자료는 받을 수 있나요
0
105
2
글목록 추출하기
0
107
2
메일 자동화 로그인 중복방지문자해결 오류 및 명시적 대기 질문
0
96
2
강의 노트가 어디에 있는건가요?
0
82
2
강의 커리큘럼 질문
0
110
1
조건문 else 사용하지 않는 이유
0
81
2
셀레니움으로 접근할 수 없는 경우
0
103
2
웹페이지 변경
0
77
2
자바스크립트로 태그 선택 시 질문입니다.
1
71
2
수료증은 어떻게 받나요?
0
126
2
class명을 활용하여 선택자를 만들지 않는 경우..?
0
65
2
드라이버가 안 열려요
0
86
2
이거 해결방법 아시는 분?
0
124
2
네이버 지식인 크롤링..
0
212
2





