인프런 커뮤니티 질문&답변

한수연님의 프로필 이미지
한수연

작성한 질문수

현존 최강 크롤링 기술: Scrapy와 Selenium 정복

브라우저를 제어해서 크롤링하기 - Selenium 기본 사용법 익히기1

크롬에서 검색어 입력 오류

작성

·

635

0

안녕하세요. 좋은 강의 항상 감사드립니다. 

브라우저를 제어해서 크롤링하기 - Selenium 기본 사용법 익히기1 강의의 5분 47초 구간을 듣고 있는데, 제가 크롤링 하고 싶은 사이트는 다음 뉴스 페이지여서 다음과 같은 코드를 작성했습니다. 

# 다음 뉴스 페이지 접속 

driver.get('https://news.v.daum.net/')

# 검색어 창 찾기 

elem = driver.find_element_by_name("kakaoSearch")

elem.clear()

# 검색어 입력

elem.send_keys("낙태")

# 엔터 입력

elem.send_keys(Keys.RETURN)

그런데 다음과 같은 오류가 뜹니다. 

InvalidElementStateException: Message: invalid element state
  (Session info: chrome=86.0.4240.80)


오류가 뜨는 이유와 해결 방법을 알려주시면 감사하겠습니다.

항상 좋은 강의 감사드립니다.

답변 2

0

저는 주피터보다는 비주얼 스튜디오 코드 프로그램이 다루기 편해서요.

비주얼로 작업하시는분들 참고하시면 도움 되실까 올려봅니다.

이렇게 해도 작동이 잘 되더라구요.

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time

driver = webdriver.Chrome()

driver.get('http://www.python.org')

# 작동 시 파이썬이라는 단어가 없을 시 동작을 도중에 멈춘다
assert "Python" in driver.title 

elem = driver.find_element_by_name("q")
elem.clear()

#키 이벤트 전송
elem.send_keys("python")

#엔터 입력
elem.send_keys(Keys.RETURN)

# 검색결과가 없을시 동작을 멈춘다.
assert "No results found." not in driver.page_source
time.sleep(2)

h3s = driver.find_elements_by_tag_name("h3")
for h3 in h3s:
    print(h3.text)


#브라우저를 닫는다.
driver.quit()

#참고. find_element_by_tag_name : 태그 이름(최초) 크롤링
#참고. find_elements_by_tag_name : 태그 이름들(모든) 크롤링.

0

제가 해보니  elem = driver.find_element_by_name("kakaoSearch") 이 부분에 

키워드를 잘못 입력하셔서 그런것 같아요.

"kakaoSearch" 이 부분을 "q" 로 바꾸시면 되실거에요.

소스코드  -------------------------------------

from selenium import webdriver

from selenium.webdriver.common.keys import Keys

# 다음 뉴스 페이지 접속 

driver = webdriver.Chrome()

driver.get('https://news.v.daum.net/')

# 검색어 창 찾기 

elem = driver.find_element_by_name("q")

elem.clear()

# 검색어 입력

elem.send_keys("낙태")

# 엔터 입력

elem.send_keys(Keys.RETURN)

한수연님의 프로필 이미지
한수연

작성한 질문수

질문하기