본문 바로가기

네이버 블로그 이웃 자동 추가하기, 파이썬 셀레니움으로 자동화 블로그 관리 방법

직장인 도구함 2024. 8. 20.

 

 

안녕하세요! 네이버 블로그를 운영하다 보면, 처음에는 간단하게 생각했던 일이 시간이 갈수록 많은 노력을 요구하게 되는 것을 느끼게 됩니다. 매일 꾸준히 포스팅을 올리고, 새로운 이웃을 찾아 추가하며, 그들에게 댓글을 남기고 소통하는 것은 상당한 시간을 필요로 합니다. 특히 육아, 직장, 집안일 등을 병행하면서 블로그를 관리하다 보면 정말로 눈코 뜰 새 없이 바빠지게 되더라고요 ㅠㅠ

 

네이버 블로그에는 '블로그 지수'라는 것이 있습니다. 이 지수는 블로그의 활성화 정도를 나타내며, 블로그 지수가 높을수록 검색 결과에서 상위에 노출될 가능성이 커집니다. 이웃과 활발하게 교류하는 블로그일수록 블로그 지수가 높아지고, 이는 블로그 운영에 있어 큰 장점이 됩니다. 그래서 저도 블로그 지수를 높이기 위해 매일 시간을 쪼개가며 이웃을 추가하고, 블로그의 사이즈를 키우려고 노력했습니다. 하지만 현실은 생각처럼 쉽지 않아서, 열심히 서이추를 보내도 이웃으로 받아주는 분들이 절반도 되지 않아 허탈감을 느낄 때가 많았습니다.

 

이런 반복 작업과 그에 대한 만족스럽지 못한 결과에 지치다 보니, 파이썬을 활용해 작업을 자동화할 수 있는 방법을 고민하게 되었습니다. 의외로 복잡하지 않게 자동화가 가능했고, 이를 통해 블로그 관리에 들이는 시간을 크게 줄일 수 있었습니다. 제가 사용한 코드를 공유해 드릴 테니, 여러분도 한번 시도해 보세요. 처음 접하는 분들도 이해하기 쉽도록 차근차근 설명해드리겠습니다.

 

이 방법을 활용하기 위해서는 우선 파이썬과 관련 패키지들을 설치해야 합니다. 파이썬 설치나 셀레니움 패키지 설치 방법이 궁금하신 분들은, 이 포스팅을 참고해 보세요! 이 포스팅에서는 파이썬 설치부터 기본적인 환경 설정 방법까지 상세하게 다루고 있습니다.

 

 

 

파이썬 설치와 비주얼 스튜디오 코드(VS Code) 설정 방법 완벽 안내

안녕하세요! 이번 글에서는 파이썬과 비주얼 스튜디오 코드(VS Code)를 설치하는 방법을 단계별로 알아보겠습니다. 파이썬을 처음 접하는 분들은 어디서부터 시작해야 할지 막막할 수 있는데요,

job-or-test.tistory.com

 

 

 

셀레니움 활용, 네이버 블로그 크롤링 및 방문자 수 자동 수집하기!

안녕하세요! 크롤링이라는 용어에 대해 들어본 적이 있으신가요? 일상적으로는 천천히 기어가는 것을 의미하지만, IT와 프로그래밍에서는 완전히 다른 뜻을 가지고 있습니다. 프로그래밍에서

job-or-test.tistory.com

 

 

 

1. 코드에 사용되는 패키지 불러오기

코드를 작성하기 위해서는 필요한 파이썬 패키지를 먼저 불러와야 합니다. 이 코드에서는 주로 셀레니움과 BeautifulSoup 라이브러리를 활용했습니다. 셀레니움은 웹 페이지와의 상호작용을 자동화하는 데 사용되며, BeautifulSoup은 HTML을 파싱하여 원하는 데이터를 추출하는 데 유용합니다.

from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.webdriver.common.by import By
from datetime import datetime
from selenium.webdriver.common.keys import Keys
import pyperclip
import requests
import time
import random

 

 

2. 시작할 블로그의 이웃목록 가져오기

출발점으로 선택할 블로그는 이웃 목록이 공개된 블로그여야 합니다. 이 블로그가 본인의 블로그 주제와 유사할수록 좋습니다. 이웃의 관심사와 주제가 비슷할수록 서로 이웃 추가 요청이 승인될 가능성이 높아지기 때문입니다. 여기서 코드는 해당 이웃의 모바일 이웃 목록에 접속해 이웃들의 ID를 스크래핑하는 역할을 합니다.

# 시작할 블로그 이웃목록 가져오기 #
StartId='시작점 ID 입력하기'
url=f'https://m.blog.naver.com/BuddyList.naver?blogId={StartId}'
response=requests.get(url)
html=response.text
soup=BeautifulSoup(html, 'lxml')
title=soup.find_all("a")

 

 

 

3. 내 아이디, 패스워드 입력하기

이제 네이버 계정으로 로그인하기 위해 여러분의 네이버 아이디와 비밀번호를 코드에 입력해야 합니다. 네이버는 보안 상 이유로 ID와 PW를 직접 입력할 경우 문제가 발생할 수 있어, pyperclip 패키지를 활용해 클립보드를 통해 붙여넣는 방식으로 코딩을 했습니다. 입력 속도가 너무 빠르면 봇으로 의심받을 수 있으니 2~6초 간격으로 랜덤하게 지연시키며 동작하도록 설정했습니다. 또한 보안을 위해 클립보드 내용을 'blank'로 덮어쓰도록 하였습니다.

# 내 ID / PW 입력하여 로그인하기#
my_Id=''
my_Pw=''

driver = webdriver.Chrome()
driver.get('https://nid.naver.com/nidlogin.login?mode=form&url=https://www.naver.com/')
pause_time=random.randint(2,6)

time.sleep(pause_time)

pyperclip.copy(my_Id)
driver.find_element(By.CSS_SELECTOR,'#id').send_keys(Keys.CONTROL+'v')
time.sleep(pause_time)

pyperclip.copy(my_Pw)
secure='blank'
driver.find_element(By.CSS_SELECTOR,'#pw').send_keys(Keys.CONTROL+'v')
pyperclip.copy(secure)  
time.sleep(pause_time)

driver.find_element(By.XPATH,'//*[@id="log.login"]').click()
time.sleep(pause_time)

 

 

 

4. 이웃들 돌아다니면서 이웃추가 하기

이제 스크래핑한 이웃들의 ID를 이용해 이웃 추가를 자동화하는 코드를 작성할 차례입니다. 서로 이웃이 아니거나, 이웃 추가가 불가능한 경우를 대비해 try~except문을 활용해 예외 처리를 추가했습니다. 이 코드는 이웃 추가 버튼을 찾아 클릭하고, 간단한 인사말을 남기는 작업을 자동으로 수행합니다.

for i in title :
    ID=i.attrs['href'].split('/')[3]
    print(f'{ID}의 블로그 서로이웃 추가 중')
    driver.get(f'https://m.blog.naver.com/{ID}')
    time.sleep(pause_time)
    neighbor_judge=driver.find_element(By.XPATH,'//*[@id="root"]/div[4]/div/div[3]/div[1]/button').text
    
    if neighbor_judge=='이웃추가' :
        try :
            elem=driver.find_element(By.XPATH, '//*[@id="root"]/div[4]/div/div[3]/div[1]/button')
            elem.click()
            time.sleep(pause_time)

            elem=driver.find_element(By.XPATH, '//*[@id="bothBuddyRadio"]')
            elem.click()
            elem=driver.find_element(By.XPATH, '//*[@id="buddyAddForm"]/fieldset/div/div[2]/div[3]/div/textarea')

            
            elem.send_keys('안녕하세요! 서이추 드립니다. 많은 교류 바래요!')
            time.sleep(pause_time)
            
            elem=driver.find_element(By.XPATH, '/html/body/ui-view/div[2]/a[2]')
            elem.click()

            time.sleep(pause_time)
        except :
            pass

 

 

 

이 코드를 사용하다 보면 이웃 목록이 너무 적거나 없을 때 프로그램이 멈추는 불편함을 겪으실 수 있습니다. 실제로 제가 사용하는 코드는 이러한 상황에서도 멈추지 않고 계속해서 작동하도록 조정되어 있습니다. 이번 포스팅에서는 기본적인 이웃 추가 방법만을 다루기 위해 이 부분은 제외했으며, 추가적인 자동화 기법은 별도의 포스팅에서 자세히 다루도록 하겠습니다. ^^

 

위의 불편한 점은 코드를 조금만 수정하면 해결할 수 있습니다. 여러분이 필요에 맞게 코드를 수정해 더 나은 자동화 프로그램을 만들어보세요. 이 코드를 바탕으로 여러분만의 편리한 블로그 운영 방식을 만들어 가시길 바랍니다!

 

 

댓글