파이썬 셀레니움 크롤링 오류에 대해 질문합니다
조회수 1837회
만들고싶었던건 사이트 포스팅에 들어가 글을 긁어오는것입니다. 현재 오류가난 그중 일부는 긁어오는건 아직 안했고 들어갔다가 크롬 돌아오기 기능을 이용해 글을 긁은 후 원래 게시판 주소로 돌아오는 부분을 만들던 중에 오류가 일어났습니다
코드는
listlink = '게시판링크'
driver.get(listlink)
#리스트내용저장
allList = driver.find_elements_by_css_selector(
"#kboard-default-list > div.kboard-list > table > tbody > tr")
#리스트내용(현 페이지 내의 게시글)들에 각각 접속
for item in allList:
postNum = item.find_element_by_tag_name("td").text #해당게시글번호
postName = item.find_element_by_tag_name("div").text #해당게시글이름
if(postName != ''):
link = item.find_element_by_tag_name("a").get_attribute("href") #게시글주소
time.sleep(2)
driver.get(link) #해당 게시글로 이동
""" 글을 긁어올 부분 """
time.sleep(2)
driver.back() #긁은후 게시판으로 돌아가기
time.sleep(2)
오류내용은
Traceback (most recent call last):
File "D:\downfile\downtest.py", line 38, in <module>
postName = item.find_element_by_tag_name("div").text
File "D:\ProgramData\anaconda3\lib\site-packages\selenium\webdriver\remote\webelement.py", line 305, in find_element_by_tag_name
return self.find_element(by=By.TAG_NAME, value=name)
File "D:\ProgramData\anaconda3\lib\site-packages\selenium\webdriver\remote\webelement.py", line 658, in find_element
return self._execute(Command.FIND_CHILD_ELEMENT,
File "D:\ProgramData\anaconda3\lib\site-packages\selenium\webdriver\remote\webelement.py", line 633, in _execute
return self._parent.execute(command, params)
File "D:\ProgramData\anaconda3\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 321, in execute
self.error_handler.check_response(response)
File "D:\ProgramData\anaconda3\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 242, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.StaleElementReferenceException: Message: stale element reference: element is not attached to the page document
(Session info: chrome=90.0.4430.93)
이렇습니다 찾아본결과 element is not attached to the page document 해당 오류는 페이지를 다 불러오기전에 반복문이 넘어가서 그런거라고 time.sleep()을 넣어주면 괜찮아진다는데 전 여전히 오류가 발생하더군요..
-
(•́ ✖ •̀)
알 수 없는 사용자
1 답변
-
슬립을 잘못 사용하고 있는걸로 보이는데요.
다음과 같이 해보세요.
listlink = '게시판링크' driver.get(listlink) time.sleep(10) #리스트내용저장 allList = driver.find_elements_by_css_selector( "#kboard-default-list > div.kboard-list > table > tbody > tr") #리스트내용(현 페이지 내의 게시글)들에 각각 접속 for item in allList: postNum = item.find_element_by_tag_name("td").text #해당게시글번호 postName = item.find_element_by_tag_name("div").text #해당게시글이름 if(postName != ''): link = item.find_element_by_tag_name("a").get_attribute("href") #게시글주소 time.sleep(2) driver.get(link) #해당 게시글로 이동 """ 글을 긁어올 부분 """ #time.sleep(2) driver.back() #긁은후 게시판으로 돌아가기 # time.sleep(2)
댓글 입력