본문 바로가기
  • True knowledge exists in knowing that you know nothing. -Socrates-
개발/Python

Python selenium 사용법 OS Error 8 잡기, 네이버 메일 크롤링

by intadd 2017. 11. 1.






안녕하세요

오랜만에 글을 씁니다.



이글은 python selenium 모듈 삽질을 하다가 다른 사람은 고생하지 않았으면 하는 생각에 적습니다.     



저번주인가 일? 비슷한 뭐 일이라고 칭하면 일인 그런 작업을하다가.

python selenium을 이용해 브라우저 컨트롤? 동작?이 필요해서 작업했습니다.

(세부적인 내용은 script 작동을 확인하는 작업)


일단 제 환경입니다.

환경: ubuntu16.04, python2.7



일단 설치해야 하는 것은 webdriver, selenium 입니다.



저는 [OS ERROR 8] 이라는 오류 때문에 엄청 고생했습니다.


.... 무슨 방법을 써도 안되더라고요 (selenium, Firefox최신버전)



오류 이유는 selenium과 Firefox 버전이 안맞는 문제+ selenium 모듈 내부 문제 인거 같습니다.

(확실하지는 않습니다.)


+) selenium 최신 버전은 베타버전이라 안정적이지 못하다는 글을 읽고.. 해결했습니다.

+) stackoverflow인가 에서 어떤분이 최신버전 베타임 ㅋ 안됨 ㅋ 이런 식의 댓글을 보고...아......................ㅅ





결론적으로 그래서 Firefox와 selenium 둘다 버전을 옛날 버전으로 재설치 했습니다.



Firefox version은 45.0.2 입니다.



selenium version은 2.53.0 입니다.


뭐 에러를 직접적으로 해결한 건 아니지만, 일단 selenium을 어떻게든 돌려야 해서

다른 방법이 있으시면 그 방법으로 돌리는것이 맞다고 생각합니다.

이 방법이 그렇게 좋은 방법은 아닌것 같아서요.



일단 이렇게 설치를 하면 준비는 끝납니다.








일단 소스는 위와 같습니다.

cookie를 추가해주는 부분(driver.add_cookie(cookie)) 이 부분은 안쓰셔도 됩니다.

일단 제 local 웹 페이지를 대상으로 했습니다.



기본 동작을 하는 소스코드는 위와 같지만 저 같은경우에는

sleep()도 주고, try로 예외도 잡고, threading 으로 주기적 으로 실행 하는 작업들을 추가 했습니다.

뭐 긴능에 따라 달라지겠지만, 소스 수정해서 사용하시면 될 것 같습니다.








+ selenium으로 뭘할까 생각하면서 생각나는데로 코드 짜고 글 적어봅니다.






음.. 일단 selenium으로 가장 많이 하는 작업이 크롤링이기 때문에 한번 크롤링 코드를 짜보겠습니다.


음... 뭐가 좋을까... 음... 네이버 메일에서 받은 데이터를 DB에 저장하는 작업을 해보도록 하겠습니다.



일단 네이버 로그인 source 





동작은 아래와 같이 합니다.



뭐 일단 네이버 로그인은 쉽게 했습니다.


메일 싸이트 접근을 해야합니다.


저 소스코드 아래에

driver.get('http://mail.naver.com ') 를 넣어줍니다.




메일에 싸이트에 접근 했으니까

db를 만듭니다.



대충 db table 구조는 위와 같습니다. name, title, time 이렇게 3개 컬럼을 만들었습니다.



python으로 mysql 접속을 쉽기 때문에 따로 설명은 하지 않겠습니다.


음.. 이제 뭐해야하지.. 음 .... 아 파씽해야합니다.



BeautifulSoup 설치하고



뭐 대충 이런 코드를 짜줍니다.

코드 해석을 알아서... 하시면 공부가 되지 않을까.. ㅎ

아 저 mail.naver.com 에 /?mobile 이 들어가 있는데 없애주셔도 상관 없습니다.


카페에서 카페 공유기 연결하고 하고 있는데 kt 뭐 인증 모시기 라고 브라우저로 인터넷 못쓰게 하길래

뭐 저렇게 하면 된다고 해서 했는데 해결 되더라고요 아무튼 없어도 상관 없습니다.



지금 까지 작업을 보면, 온 메일들을 포함하는 div tag 들에서 text를 추출한 겁니다.



아래와 같이 쭉 나옵니다.


이제 또 긁어온 tag에서 필요한 tag를 분리해서 db에 저장하겠습니다.



    

아까 태그 추출 한 부분을 위와 같이 수정 했습니다.

출력 결과는 


잘 작동 합니다.

그러면 이제 db 연결 후 저장만 하면 되겠습니다.

pymsql 모듈을 이용합니다.






너무 대충 짜서 보기 안좋네요.. 








다음에는 selenium instagram auto following bot 하겠습니다.


'개발 > Python' 카테고리의 다른 글

python 기본문법  (0) 2017.01.02
python 기초 사용법  (0) 2017.01.01
python 설치 방법  (0) 2017.01.01
고등학생 조교 활동 (python)  (0) 2016.12.29

댓글