파이썬 selenium 관련 질문드립니다
조회수 725회
파이썬 셀레니움에서 (구글 headless모드) 웹데이터를 파싱해오는 함수를만들었는데요
print로 확인해봤을때 self.driver.get_screenshot_as_file('1.png')을 추가하여 스크린샷을 찍어오면 파싱
이 정상적으로 잘 되고
똑같은 코드인데 스크린샷추가만 빠지면 파싱이 안됩니다. 이유가 뭔지 아시는분 있으신가요?
-
(•́ ✖ •̀)
알 수 없는 사용자
1 답변
-
스샷함수(get_screenshot_as_file)가 완료되는 시간이 크롤링을 하려는 페이지가 모두 로딩되는데 걸리는 시간보다 길기 때문일 겁니다.
sleep()을 하는 효과랑 비슷하다고 할 수 있죠.
아마 타겟 페이지는 로딩 후 비동기로 데이터를 수급하는 페이지일 것이고, 수급된 데이터로 추가적으로 HTML Element들을 만들어 뿌리고 있을 겁니다. 이 비동기 작업이 완료되기 전에 접근을 하게 되면 파싱이 안되는 거죠.
- 음 implicitly_wait()을 써주었는데 그거랑은 상관없이 로딩이 되지 않은건가요? 알 수 없는 사용자 2018.10.29 14:45
- 글쎄요. 다른쪽 코드를 보지 못해서 확답은 드리기 어렵지만 파싱이 안되는 경우는 위의 경우가 가장 일반적인듯 하여 말씀드렸습니다. 스크린샷 찍는 함수가 매우 무겁다고 알고 있어서요. doodoji 2018.10.29 14:49
- https://beomi.github.io/2017/10/29/HowToMakeWebCrawler-ImplicitWait-vs-ExplicitWait/ 이 글을 참고해 보시죠! doodoji 2018.10.29 14:50
- 상세한답변 감사드립니다! sleep함수를 조금씩주니 효과가 비슷하네요! 알 수 없는 사용자 2018.10.29 15:42
- 때려맞춘 느낌이 있어서 걱정스러웠는데 뭔가 된다니 다행이네요. ㅋㅋ doodoji 2018.10.29 15:47
댓글 입력