본문 바로가기

프로그램 개발일지

[Python] 네이버 블로그 자동 포스팅 만들기 - 1

반응형
 

Instagram

 

www.instagram.com

 

프로그램 개발 의뢰가 들어왔다....

 

바로 GPT를 이용해 네이버 블로그에 자동으로 글을 올려야 한다는 의뢰 .... !!

 

 

코딩을 전문적으로 배운적이 없고 경력도 없어서 어떤게 정석인진 모르겠으나

 

보통 나는 의뢰 내용을 보고, 미리 어떤 식으로 만들지 머리에 딱 떠오르는 편이다.

 

 

1. openai api를 이용해서 gpt와 대화

2. 셀레니움으로 블로그 글쓰기

 

바로 시작해보자 !

 

 

 

 

 

 

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver import ActionChains, Keys
import pyperclip, time

 

 

먼저 모듈을 import 해주자

 

chrome_options = Options()
chrome_options.add_argument("lang=ko_KR")
chrome_options.add_argument('no-sandbox')
chrome_options.add_argument('disable-gpu')
chrome_options.add_argument("disable-dev-shm-usage")
chrome_options.add_argument("--log-level=3")
chrome_options.add_argument("--disable-3d-apis")
driver = webdriver.Chrome(service=Service(), options=chrome_options)

 

크롬 옵션 설정해주고 ....!

 

 

 

네이버 블로그에 글을 쓰려면 뭐가 가장 먼저 필요할까?

너무나 간단한 퀴즈의 답은 바로 로그인 하기 !

 

 

프로그램 제작을 진행하면서 미리 만들어 놨던 로그인 함수가 있으니 이번엔 그냥 복붙하면 된다.

 

url = 'https://nid.naver.com/nidlogin.login?mode=form&url=https://blog.naver.com/'
driver.get(url)
# 로그인을 하면 블로그홈으로 자동으로 가게끔 url을 지정해준다 !

bb = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.ID, "id"))
)
bb.click()
# 네이버 로그인 창에서 ID=id인 항목이 나올때 까지 대기했다가, 찾으면 클릭

a = pyperclip.paste()
# 복붙을 이용해서 로그인할꺼라, 이미 클립보드에 있던 내용을 a에 복사 해놓자.

pyperclip.copy(id)
# id변수의 값을 클립보드로 옮김

actions = ActionChains(driver)
actions.key_down(Keys.CONTROL).send_keys('v').key_up(Keys.CONTROL).perform()
# 드라이버에서 컨트롤+V 효과를 냄 !

time.sleep(1)
# 봇인식 무서우니 1초정도 기다리기 ... !

## pw도 똑같음 !
bb = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.ID, "pw"))
)
bb.click()
pyperclip.copy(passwd)
actions = ActionChains(driver)
actions.key_down(Keys.CONTROL).send_keys('v').key_up(Keys.CONTROL).perform()
time.sleep(1)

#복붙 끝났으니 아까 a에 저장했던 값 다시 클립보드로 고고
pyperclip.copy(a)

# 로그인 버튼 기다렸다가, 버튼 누르기
bb = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.ID, "log.login"))
)
bb.click()

 

 

 

로그인 성공

 

 

 

로그인 성공 했다. 

(실제 얼굴들이 나와있어서 가렸음)

 

 

 

 

 

근데 뭔가 밋밋하지 않나 ?

로그인을 했는데, 로그인이 된건지 확실히 알고 싶다.

 

어떻게 하면 알 수 있을까 ?!!>!

 

 

 

로그인을 하게되면? 로그아웃 버튼이 생긴다.

 

그럼 ? 로그아웃 버튼이 있는지 확인하고 있으면 성공 ! 없으면 실패 !

 

 

 

try:
    bb = WebDriverWait(driver, 5).until(
        EC.presence_of_element_located((By.CLASS_NAME, "button_signout"))
    )
except:
    return 0
return 1

 

좋다. 로그아웃 버튼의 class name은 button_sighout이라서

이게 있는지 5초 까지 찾아본다.

 

5초가 지나도 없으면 에러가 나오니까 try구문으로 있는지 없는지 확인이 가능하다.

 

 

위 코드들을 전부 def login(): 한 뒤,

 

 

d = login()
if d == 1:
    print('로그인 성공')
else:
    print('로그인 실패')

 

완.벽

 

 

 

원래 내 블로그의 이름을 파싱해와서 지정된 게시물 작성 링크로 이동하려 했다.

블로그 홈에서 그 이름을 찾을 수 있다 생각했는데, 보이지가 않던 와중 ..

 

블로그 이름 찾을 필요없이 바로 글쓰기로 이동 가능한 링크가 있어서 그걸 사용하기로 했다.

 

driver.get('https://blog.naver.com/GoBlogWrite.naver')

 

 

 

driver.execute_script('document.querySelector("#container > div > aside > div > div:nth-child(1) > nav > a:nth-child(2)").click();')

 

드라이버에 스크립트를 실행해서 버튼을 눌러도 되지만, 그냥 링크 이동 하기로 했다.

(별 뜻 없음)

 

 

 

2편으로 넘어가보자.

 

 

 

.....블로그 글 쓰면서 코딩하려니 정신이 없다 ...................

 

 

 

 

requests편 보러가기 !!

 

[Python] 네이버 블로그 자동 포스팅 만들기 - requests로 글쓰기 1편

파이썬에 입문을 하고나면 셀레니움을 자주 사용하게 된다. (아님말고) 웹 자동화를 쉽게 할 수 있고, 안되는게 거의 없어서 아주아주 유용하고 좋긴한데 ...? ! 여러가지 단점들이 존재하고 ....

myworld1004.tistory.com

 

 

 

 

 

 

[종합 매크로] 공지사항

---업데이트 예정

myworld1004.tistory.com

 

 

 

 

코딩쟁이들 놀이터 : 네이버 카페

세상 모든 코딩쟁이들의 카페입니다

cafe.naver.com

 

 

 

 

주식회사 유메

#프로그램제작 #프로그램

open.kakao.com

 

반응형