트위터_selenium 작동시 오류
본 강의대로 트위터 로그인을 selenium을 이용해서 하면 잘 됩니다.
하지만, 문제가 종종 발생합니다. 아래와 같은 에러 메세지가 마지막에 뜹니다.
NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":"[name="session[username_or_email]"]"}
(Session info: chrome=80.0.3987.116)
랜덤하게 어떨때는 실행이 잘 되고, 어떨때는이런 에러 메세지가 뜹니다.
그래서 코드 중간 중간에 time.sleep(10) 정도를 넣어 주면, 확실히 에러가 없이 실행이 됩니다.
왜 이런 현상이 발생하는 건가요?
성능이 좋은 컴퓨터로 하면 중간에 sleep 시간을 넣어주지 않아도 되나요? 아니면, selenium 자체가 가진 문제인가요? 아니면 혹시 인터넷이 느려도 이런 현상이 발생할 수도 있나요?
프로그램은 chromedriver로 하였습니다.(headless chrome 아니고..)
해결방법은 없나요? 중간에 sleep을 넣으면 시간이 너무 많이 걸립니다.
(추가 질문)
본 강의 마지막 부분에 언급하신 내용 중,
특정 사이트는 동일한 코드를 사용할지라도 chromedriver/phantomjs/headless chrome 중에 되는 것이 있고 안되는 것이 있고, 또한 css_selector로는 찾아지는데, id 로는 찾을수 없는...등등
이러한 경우에는 미리 알수 있는 방법이 있나요? (이 사이트 경우에는 이런방식을 써야 겠구나하는...)
고급자들도 그냥 하나하나 다 해보면서 잘되는 것을 찾아 crawling을 하나요?
아니면 페이지 소스를 보고 판단 후에 crawling을 하나요?
답변 1
1
안녕하세요.
우선 크롬 브라우저가 가끔 업데이트되요. 해당 chromedriver는 근데 한번 설치하면, 잘 업데이트안하게 되죠. 버전에 맞는 드라이버를 설치하셨는지 확인하시면 좋을 것 같습니다.
다음으로 아무리 버전이 동일하다해도, 운영체제에서 현재 어떤 프로그램이 동작하느냐등 PC 의 여러 요소, 또 심지어 네트워크 딜레이등 여러 예상할 수 없는 요소로 인해 브라우저에서 웹페이지 로딩이 느려질 수 있어요. 그렇기 때문에, 어떨때는 sleep을 안줘도 잘되고, 어떨때는 sleep을 줘야 잘되고 이것은 항상 다를 수 있습니다. 단지 넉넉잡고 이정도 sleep을 주면 크게 여러 요소가 있더라도 왠만한 경우에는 잘될 것이다 이렇게 설정을 하는 것이 일반적입니다. 아무리 잘되도, 당시 네트워크가 큰 딜레이가 있어서 로딩이 매우 느리다면 에러가 나는 것은 어찌보면 당연한 것이니까요.
chromedriver/phantomjs/headless chrome 이 부분중 어떤 것은 되고, 어떤 것은 안되는 경우가 가끔 보여요. 이 부분은 사이트 코드만 봐서는 바로 알기는 쉽지 않습니다. 대부분 headless chrome이 간편하니 이것으로 해보고, 사이트가 headeless chrome을 쓸 경우, HTML request header를 면밀히 체크해서, 크롤링을 최대한 막는 경우가 있습니다. 이 경우에는 부득이 그것을 뚫으려고 HTML request header를 정말 사람이 브라우저로 본것처럼 완벽하게 동일하게 하려고 노력하려면 시간이 많이 걸리기 때문에, selenium이나 phantomjs로 시도를 해봅니다. 각 케이스별로 왜안되는지를 완벽하게 확인하는 시간이 오래걸리기 때문에, 크롤링 작업을 빠르게 해야 해서, 이를 알아보는데 시간을 많이 투자하기보다는 바로 다른 기술로 시도해보는 편이 생산성이 좋기 때문입니다.
감사합니다.
코딩을 잘 따라 한 것 같은데 오류가 발생하는 것 같습니다
0
626
1
scrapy를 jupyter 환경에서 할 수 있나요
0
361
1
[실전 크롤링: scrapy 크롤링 팁] 질문있습니다.
0
313
1
[실전 크롤링: 지마켓 크롤링하며, scrapy 실전 활용법 익히기1] 5분50초쯤 질문
0
221
1
[강력/최신 크롤링 기술: Scrapy 로 지마켓 크롤링하기1] 관련 질문
0
279
1
xml을 parsing할때 <을 < 로 인식합니다.
0
335
1
pipelines.py에서 process_item내에서 print문이 작동을 하지 않네요 ㅠ
0
292
3
PhantomJS 문의
0
294
1
selenium 문의
0
329
1
브라우저 제어해서 크롤링하기 - 처음강의 마지막부분 문의
0
3004
1
on error 해결 방법 질문
0
356
1
[팁] 윈도우 cmd 커맨드
0
347
1
[팁]Chrome User Agent 아는법
0
328
1
실전 크롤링: 브라우저를 제어해서 트위터 사이트 로그인 하기 질문
0
254
1
동영상 강의 만드실 때 사용한 툴을 알려주실 수 있을까요?
0
237
1
CSS Selector 에서 질문이 있습니다.
0
435
2
pip install scrapy 오류
0
484
1
셀레니움 실행불가
0
1578
1
실전 크롤링: XPATH와 Selenium 활용해서 페이스북 로그인 하기 에서 질문이 있습니다.
0
227
1
언제 get_text()를 사용하고 또 언제 .text를 사용하나요?
0
288
1
강의교안자료 받을수있을까요?
0
263
1
[강의 9:27관련 질문] price, title 열 위치
0
160
1
div에 있는 클래스가 2개이면 어떻게 하나요?
0
368
1
css 셀렉터에 대해 질문이 있습니다.
0
147
1





