티스토리 블로그에서 글을 백업하기 위한 첫 관문은 코딩을 이용해서 로그인을 하는 것이다.
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 입력시에 해당 입력 창을 클릭하는 코드를 짜서 넣으면 에러가 났다.
저렇게 간단하게 짜도 로그인에 성공하였다.
━━━━━
다음 작업은 '관리자' 창에서 '글관리'로 가서 글들을 날짜, 제목, 내용, 이미지 순으로 스크랩하는 것이다.
댓글
댓글 쓰기