파이썬 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

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)