본문 바로가기

Programing/Python

[Python-Selenium-Chrome-RPA] 웹 사이트 자동 로그인(2) - 쿠키를 이용한 로그인

반응형

2023.01.16 - [Programing/Python] - [Python-Selenium -Chrome-RPA] 웹 사이트 자동 로그인(1) - 쿠키 얻기

 

[Python-Selenium -Chrome-RPA] 웹 사이트 자동 로그인(1) - 쿠키 얻기

웹 크롤링을 하다보면 로그인을 해야만 보이는 컨텐츠가 있기 마련인데, 셀레니움을 통해 크롬을 조작할 경우 창을 새로 띄울 때마다 로그인을 진행하게되 서버에서 과도한 로그인 횟수로 인해

it-storyit.tistory.com

 

 

지난 자동 로그인시 필요한 쿠키를 저장하는 코드를 작성했는데, 이번 포스팅은 그 쿠키값을 이용하여 로그인을 하는 코드를 작성해보겠습니다.

 

 

 

시작전에…

쿠키는 유효기간이 존재 하며, 발급하는 사이트 및 주체에 따라 다릅니다.

 

최소한 로그인 후 동작하고 있다면 괜찮지만, 사용하지 않은 시간이 유효시간을 넘어가면 다시 쿠키를 얻어 로그인을 진행해야 합니다.

지난 강의에 예제로 Gmarket을 이용하였으므로, 같은 조건으로 코드가 작성됩니다.

 

 

(1~3) webdriver , sleep, json 함수 사용을 위해 import를 해줍니다.

(6~8) 크롬드라이버의 경로 및 쿠키 파일 경로, 로그인 페이지 주소를 전역변수로 담아줍니다.

 

 

(1~4) 로그인 동작을 할 클래스 함수 하나 만들고 초기화로 크롬 드라이버를 인식해줍니다.

 

 

(1) 쿠기값을 받아올 파라미터 1개 로그인에 필요한 url주소를 받아올 파라미터 1개 해서 총 2개 파라미터를 받아오는 메소드를 작성합니다.

(2)우선 이전에 쿠키 기록이 남아있으면 에러가 발생될 수 있기 때문에 갖고 있는 쿠키값을 모두 삭제하고,

(3)get 메소드를 이용해 로그인 사이트를 띄워줍니다.

(4~5)이제 크롬브라우저에 add_cookie 메소드를 이용해 쿠키값을 넣어줍니다. 이때 꼭 {key:value} 형식의 딕셔너리(오브젝트) 형식으로 들어가야 합니다.

 

반응형

(6)refresh 메소드를 이용한 로그인 페이지 새로고침 실행

 

이번 방법에는 로그인 페이지를 열고 쿠기 넣고 다시 새로고침하는 다소 불필요한 사이트 로드가 들어가는데, 지마켓의 경우 쿠키값에 쿠키가 사용되는 위치가 저장되어 있는지, 다른 페이지에서 쿠키값을 넣으면 제대로 인식하지 않았습니다. 페이지 로드전에 사용해도 마찬가지였구요.

 

(1~2) 로그인 후 이동할 페이지를 메소드로 만들어 주고, 클래스 함수를 마무리 합니다.

 

(1~4) 미리 만들어 놓은 로그인하는 클래스 함수를 순차 적으로 실행하는 함수를 만들어 줍니다.

 

 

(1~5) 로그인 후 이동할 페이지를 변수에 담고, 이전에 저장한 쿠키파일을 json 함수를 이용해 로드하여 그걸 바로 위에 만들어 놓은 함수 호출하는데 사용해 줍니다.

 

마무리...

이번 포스팅에서는 로드만 하고 사용하지 않은 sleep 함수가 있는데, 컴퓨터 성능에 따라 페이지 이슈가 생기면 단계 별로 sleep(5) ←(5초 대기하라는 의미) 같이 대기 함수를 넣어 주셔도 됩니다.

아니면, implicitly wait, Explicitly wait 방법을 사용해주시기 바랍니다.

 

 

코드 전문

반응형