본문 바로가기

Theory/DataScience

동적 환경에서 웹 정보를 얻을때 편한 Selenium - 네이버에 로그인하고 메일 목록 확인하기 -

아주 예전에 웹 정보를 쉽게 가져올 수 있는 Beautiful Soup을 이야기했었는데요.[바로가기] 이 아이만으로는 약간 한계가 있습니다. 뭐 꼭 버튼을 클릭해야한다던지, 로그인 화면처럼 어떤 정보를 입력해야하는데 그게 접근 주소에 나타나면 쉽게 접근해 볼 수 있는데, 그렇지 않다든지 하는 일들이지요. 그럴때 요즘에 셀레니움(Selenium)을 많이 사용하시는 것 같아요^^. 그래서 그 아이를 한 번 이야기할려구요. 그래서 네이버에 로그인을 하고 또 살짝 내 메일함에서 보낸사람 목록을 추출해 볼까 합니다.^^

먼저 pip install selenium으로 셀레니움을 설치합니다.

그리고 크롬드라이버를 자신의 OS에 맞춰서 다운로드 받습니다.

이제 쉽게 사용하는 방법은 이 4줄을 입력해 보는 겁니다. 아 크롬드라이버는 경로에 신경쓰셔야죠^^ 아무튼 위 코드.. driver.get("http://naver.com")이 실행되면 바로 크롬 새 창이 뜨면서 네이버에 접속해 있을 겁니다.

앗.. 로그인창이 바로 나타나는 줄 알았더니 버튼을 한 번 눌러야하네요. 이럴떄는 크롬의 개발자 도구에 들어가서 위에 작은 네모로 표시된 Select 버튼을 누르고 NAVER 로그인이라는 버튼을 누르면 해당 코드를 보여줍니다. 거기서 a 태그에서 마우스 오른쪽 버튼을 눌러서...

Copy XPath를 선택하면 됩니다.

그리고, driver.find_element_py_xpath 명령안에 아까 copy된 XPath를 붙여넣기 하면 됩니다. 단 붙여넣기해서 그 결과를 보면 아시겠지만, 따옴표(")가 있어서 따옴표 세 개(""")를 사용합니다. 아무튼 위 명령에 .click()옵션을 붙여서 실행하면 네이버의 로그인 화면으로 넘어가게 됩니다.

이제 아이디와 비밀번호를 입력해야하는 데요... 그 둘을 입력하는 텍스트 입력창의 id를 확인해야 합니다. 그 방법은 위에서 로그인 버튼 찾을 때와 같이 크롬의 개발자 도구를 이용해서 찾는게 편합니다.

그렇게 아이디와 비밀번호 입력창의 id를 확인하고... (위 그럼처럼 아이디는 id, 비밀번호는 pw입니다)

그리고, driver.find_element_by_id에 id와 pw를 넣고, 이어서 .send_keys로 아이디와 비밀번호를 입력합니다.

그리고.. 그 아래 로그인 버튼의 XPath를 copy해 둡니다.

이제.. driver.find_element_by_xpath로 버튼을 누르면.. 로그인이 완료됩니다.^^

그리고.. driver.get을 통해 네이버 메일로 연결하죠^^ (뭐 바로 가도 되지만... 그냥 첫화면 부터 진행하고 싶었습니다.^^) 그러면 Python에서 Selenium으로 관리하는 크롬 페이지의 네이버 화면이 네이버 메일 화면으로 넘어갈겁니다.^^

이제.. driver.page_source를 이용하면 현재 페이지의 주소를 알 수 있습니다. 그걸로 Beautiful Soup을 이용해서 페이지를 읽으면 됩니다. ㅎ

이제 읽어야할 테그를 확인해야 하는데요.. 뭐 그건... 또 크롬 개발자 도구를 쉽게 사용하면 됩니다.^^ 

그런데 class의 이름이 약간 복잡하네요.. 통으로 복사를~^^

일단, soup.find_all로 해당 태그를 모두 찾아봅니다.

.get_text()로 쉽게 리스트로 땡겨왔습니다. 근데 어째 죄다 보낸사람이 광고ㅠㅠ.

앗.. 메일 리스트에 페이지가 하나 더 있네요... 그 위치를 알아내는 것도.. 역시 크롬 개발자 도구에서~

역시 쉽게 이동됩니다.

ㅎㅎ.. 다 얻었네요. . Selenium과 Beautiful Soup을 사용한다면 웬만한 웹페이지에는 접근할 수 있겠네요^^

반응형