기본 콘텐츠로 건너뛰기

selenium을 이용한 카카오 로그인┃웹스크래핑 공부(2)

티스토리 블로그에서 글을 백업하기 위한 첫 관문은 코딩을 이용해서 로그인을 하는 것이다.

selenium(파이썬을 이용해 웹에서 자동적 상호작용을 하게 하는 도구)을 이용해 티스토리 블로그 로그인을 어떻게 하는지에 대한 코드는 검색을 하면 여기저기에서 볼 수 있다.

일단 kakao 아이디가 통합되어 있다면 2022년 이전 코드는 소용이 없는 것 같다. 또 '카카오 로그인'을 설명하는 게시물들 중에 요즘 로그인 코드와 다른 구버전의 코드로 작성된 것도 보인다.

가령 이 코드 같은 경우는 실제로 작동하지 않는다. 카카오 웹 구조가 위 코딩이 짜였을 때와 달라졌기 때문이다. 또 Python 버전에 따라서 selenium 코드도 다르다. 옛날 버전에서는

driver.find_element_by_id('id_email_2').send_keys(user_id)

라고 적는 것이 최신 버전에서는 다음과 같이 바뀌었다.

driver.find_element(By.ID, 'id_email_2').send_keys(user_id)

그래서 검색 가능한 코드들을 복붙한다고 결과가 나오지 않는다. 사소한 문제 때문에 작동하지 않는 코드를 써야 하기도 한다.

로그인 자동화 시에 '자동 로그인'을 막는 포털의 대응 때문에 과거에 알려진 방법이 더 이상 유효하지 않은 경우도 있다.

네이버 로그인의 경우 몇 가지 우회 방법이 알려져 있는데(참고), 인간스러움을 보이기 위해서 코드 실행 사이에 '쿨 타임'을 넣는다던지, 로그인 시에 사람처럼 복붙하게 해서 네이버를 속인다 든지 하는 스킬이 덧붙여진다(참고).

덕분에 time.sleep() 함수라던지, pyperclip.copy('비밀번호'); tag_pw.send_keys(Keys.CONTROL, 'v') 함수를 써 봤다. 그래서 네이버에 로그인 하는 것까지는 성공했다. 그러나 자동 로그아웃은 실현시키지 못했다. 'a href'가 해당 버튼 코드의 맨 앞에 위치하고 있을 때, 문제가 발생하는 것 같다.

<a href="https://nid.naver.com/nidlogin.logout?returl=https%3A%2F%2Fwww.naver.com" target="_parent" class="btn_logout" data-clk="nmy.logout">로그아웃</a>

일반적으로 알려진 방법으로 저 버튼을 코드로 클릭하기가 어려웠다.

가령 browser.find_element(By.XPATH, '해당xpath').clik()이라 적은 코드는 계속 에러 메시지를 띄웠다.

어쨌든 네이버에 로그인이 성공해서, 웹 서핑을 적당히 하며 티스토리 블로그 로그인을 시도하게 되었다. 네이버 로그인과 같은 방식으로 접근해서 무척 어려움을 겪었다.

import time
from selenium import webdriver
from selenium.webdriver.common.by import By

browser = webdriver.Chrome()
browser.implicitly_wait(2)
ts_url = "블로그 로그인 url"
browser.get(ts_url)
time.sleep(1
browser.find_element(By.NAME, 'email').send_keys('카카오계정 이메일')
browser.find_element(By.NAME, 'password').send_keys('해당pw')
time.sleep(1)
browser.find_element(By.XPATH, '//*[@id="login-form"]/fieldset/div[8]/button[1]').click()

처음에는 browser.find_element(...).click()을 넣었다. 그런데 카카오 계정에서는 id, pw 입력시에 해당 입력 창을 클릭하는 코드를 짜서 넣으면 에러가 났다.

저렇게 간단하게 짜도 로그인에 성공하였다. 

━━━━━

다음 작업은 '관리자' 창에서 '글관리'로 가서 글들을 날짜, 제목, 내용, 이미지 순으로 스크랩하는 것이다.

댓글

이 블로그의 인기 게시물

미신과 종교라는 개념에 담긴 '너는 틀렸고, 내가 맞다'

※ 이 글은 '얼룩소'에 2023년 1월 21일에 게재했던 글입니다. ─── ∞∞∞ ─── 미신이란 말을 많이 씁니다. 그게 무엇이냐 물어 본다면 우리는 어떤 행위들이나 관념을 이야기합니다. 뇌과학자 정재승 선생님도 미신 이야기를 하면서 '빨간색으로 이름 쓰는 행위가 불길하다는 미신'을 이야기했습니다. 차이나는 클라스, 정재승 편 미신이 어떤 것인가를 말할 때, 이렇게 미신에 속한 것들을 이야기하게 됩니다. '시험 볼 때 미역국을 먹지 않는다' '시험 볼 때 포크를 선물한다' '손 없는 날 이사해야 한다' '밤에 손톱을 깎으면 안 된다' '귀신을 쫓기 위해서 팥죽을 먹는다' 그럼 '미신'은 어떤 것이냐 설명해 보라면, 아마 이런 말들을 늘어 놓게 될 겁니다. https://engoo.co.kr/blog/먼나라이웃나라-세계-각국의-다양한-미신들/ 표준국어대사전에 바로 그와 같이 설명이 되어 있습니다. 표준국어대사전 '미신' 항목 그런데 이런 개념은 일상에서는 그런대로 사용할 수 있지만, 엄밀하게 따지면 쓸 수 없는 설명입니다. '비합리적이고 비과학적'인 게 너무 광범위하기 때문입니다. 도덕적, 경제적 판단과 믿음에도 그런 사례를 많이 찾아 볼 수 있습니다. 가령 '관상은 과학이다', 'ABO 혈액형 성격론', '과시적 소비' 등등. 어떤 종교적 맥락에서 '이상한 것'을 이야기하기 위해서 '미신'이란 말을 많이 사용합니다. 종교와는 다른 것으로 이야기합니다. 그런데 위 국어사전의 개념 정의는 종교도 포함된다고 볼 수 있습니다. 미신과 종교가 구분되지 않는다면, 어딘지 이상하게 느껴집니다. '미신'은 과학적 개념은 아니다 우리가 일상에서 당연시하는 많은 개념은 편견의 산물인 경우가 많습니다. 정상과 비정상의 구분에서 그런 게...

미신에 대한 중립적 개념은 무엇일까?

※ 이 글은 '얼룩소'에 2023년 1월 25일에 게재했던 글입니다. 본래 제목을 약간 수정하였습니다. ─── ∞∞∞ ─── 미신, 사이비, 이단 이 말들은 종교의 대척점에 있는 개념들입니다. 미신은 종교적 의식(儀式)이지만, 종교적 수준에 이르지 못한 것을 지칭하는 경향이 있습니다. 물론 모든 비과학적인 믿음을 통칭할 때 사용하기도 합니다. 사이비(似而非), 말뜻은 ‘비슷하지만 틀린 것’이죠. 영어의 ‘pseudo-’에 대응되는 말입니다. 사이비 종교를 ‘pseudo religion’이라고 하지요. ‘가짜’라는 의미가 두드러집니다. '사이비'란 말은 『맹자(孟子)』, 「진심장구하(盡心章句下)」 편에 수록된 말입니다.  孔子曰: 惡似而非者(공자왈: 오사이비자) 공자께서 말씀하시길, "나는 비슷해 보이지만 실제로는 아닌 것을 싫어한다." 출처: 다락원 페이스북(https://www.facebook.com/darakwonchild) 이 언급의 자세한 맥락은 다음의 글을 참고하세요( 사이비-나무위키 ). 겉만 그럴 듯하고 속은 빈 경우를 말합니다. 사이비란 말은 참된 종교와 거짓 종교를 말하는 맥락에서 많이 쓰이게 되면서 애초 의미에서 '거짓 가르침'으로 변하였습니다(사이비과학, 사이비종교 등등). 이단(異端), 말뜻은 ‘끝이 다르다’이고, 의미상으로 ‘사이비’와 큰 차이가 없습니다.  『맹자집주』의 주자주(朱子註) 중 '맹자는 양주와 묵적과 같은 이단에게서 유교를 지켰다'라는 표현이 나옵니다. 유교의 맥락에서 '이단'의 대표주자는 '양주와 묵적'입니다. 양주는 '위아설'(나만 위하면 돼), 묵적은 '겸애설'(모두 무차별적으로 사랑하라)로 이야기됩니다. 유가들이 곡해해서 '무부무군(無父無君)의 가르침'으로 평가되는 것이지, 그리 허무맹랑한 가르침은 아니라고 평가되고 있습니다(참고: 양주(전국시대)-나무위키 ...

한 해를 시작하는 날은 많다?│시간과 종교적 본능

※ 이 글은 '얼룩소'에 2023년 1월 2일에 게재했던 글입니다. (부제를 약간 수정) ─── ∞∞∞ ─── 1년의 시작점은 많습니다. 우리에게 익숙한 시간은 동지, 설, 정월대보름, 입춘 등입니다. 전에 이야기한 16세기 후반 프랑스의 신년 기념일들처럼( 참고 ) 같은 나라 안에서도 여러 신년 기념일이 있는 경우는 특이한 현상이 아닙니다. 왜 이렇게 되었을까요? 원래 지역적인 단일성은 있었을 겁니다. 특정 지역에서는 1월 1일이다, 이 동네는 음력 설이다, 이 동네는 입춘이다, 이렇게 말입니다. 이게 어떤 계기에 통합되는 과정을 거칩니다. 지역적으로 통일성을 가진 집단들이 묶여서 더 큰 집단으로 통합되면서 시간, 의례 등을 통합하는 과정이 뒤따르게 됩니다. 종교단체 수준에서도 진행이 되지만 국가 수준에서도 진행이 됩니다. 이 과정은 국가의 흥망성쇠, 종교단체의 흥망성쇠 등 집단 구속력의 변화에 따라서 부침을 겪으며 반복·중첩되었을 것으로 보입니다.  앞서 언급한 프랑스에서는 16세기에 신년 기념일을 단일화하려 했습니다. 한국에서는 그러한 노력이 19세기말 20세기에 시도되었습니다. 공식적인 수준에서 한 해의 시작일은 그렇게 하루 아침에 바꿀 수 있지만, 의례적으로 기념하는 첫 날은 쉽게 변화하지 않습니다. 이를 문화적 관성이라고 할 수 있습니다(선조들이 해왔던 대로 해야 한다는 의식으로 나타남). 여러 신년 기념일은 그런 통합의 힘에도 어떤 현실적 필요에 의해서 과거의 전승이 살아남아 그 흔적을 남긴 덕분입니다. 다만 해당 기념일을 현재에 활용하는 의미는 달라질 수 있습니다.  현재적 가치를 상실하게 된다면 사라질 운명을 일 겁니다. 그럴 경우 '고유한 문화를 지키자'는 운동이 표출될 수도 있습니다. 집단 정체성과 관련된 전통으로 선택되지 못하면 잊혀지는 것이고요. 동지 우리에게는 팥죽 먹는 날 정도의 의미만 남았습니다. 그러나 이 날도 과거에는 새해가 시작되는 날로 기념되었습니다. 그런 동지 축제가 신년 축제인 사례도...