아주 예전에 웹 정보를 쉽게 가져올 수 있는 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을 사용한다면 웬만한 웹페이지에는 접근할 수 있겠네요^^
'Theory > DataScience' 카테고리의 다른 글
간편하게 사용하면서도 꽤 이쁜 기능도 많은 워드 클라우드 Word Cloud 모듈 (for Python) (51) | 2017.05.31 |
---|---|
Python 유저가 한글 자연어 처리를 할 때 필수 모듈인 KoNLPy를 소개합니다. (34) | 2017.05.23 |
19대 대선 후보간 득표율의 지역별 비교 - 문재인 대통령, 홍준표 후보, 안철수 후보 (28) | 2017.05.13 |
텐서플로우(tensorflow)에서 텐서보드(tensorboard) 사용하기 (몹시 기초) (10) | 2017.04.05 |
인구 소멸 위기 지역 파악해보기~~~ (22) | 2017.03.24 |
시각화하기 좋은 우리나라 지도 그리는 법을 소개해 드립니다.^^ (8) | 2017.03.15 |
서울시 범죄현황 통계자료에 대한 확인 (78) | 2017.03.02 |