상세 컨텐츠

본문 제목

[파이썬] 크롬에서 selenium으로 티스토리 공감 버튼 자동 누르기 (feat.fake_useragent)

코딩

by 땡감 2022. 1. 10. 23:45

본문

반응형

티스토리를 운영하다보면 신경쓰고 싶지 않아도 신경쓰이는게 게시글의 좋아요수와 방문자 수이다.

나 역시 티스토리를 운영한지 몇년이 지났지만 드문드문 하다보니 좋아요수가 그리 많지는 않았다.

그래서 이참에 파이썬도 공부할겸 좋아요 버튼 누르는 프로그램이나 만들어 볼까? 했는데 의외로 잘 작동하여 아카이브차원에서 코드를 공개한다.

참고로 작성 전,후 검색을 해보니 티스토리에서 매크로로 인식하여 계정 자체에 불이익이 갈 수 있으니 이점은 반드시 숙지해야 한다.

나는 간단하게 테스트용으로 몇 번 돌려보고 잘 작동되는지만 확인해봤다.

끝으로 여담이지만 매크로 인식을 피하기 위해 IP 우회를 검색도 해봤지만 TOR를 설치해도 Proxy 연결이 되지 않아 fake_useragent를 사용하기로 결정했다.

다시 한번 말하지만 해당 소스로 사용으로 인해 불이익을 받을 경우 본인에게 책임이 있다.

 

import time
from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.chrome.options import Options
from fake_useragent import UserAgent


#Fake Useragent 설정
options = Options()
userAgent =UserAgent().random
#print(userAgent)   #랜덤으로 잘 변경되는지 확인 코드
options.add_argument(f'user-agent={userAgent}') #fake_useragent로 옵션값 설정
driver = webdriver.Chrome('크롬 드라이버 경로', options=options
#ex) driver = webdriver.Chrome('C:/Users/root/PycharmProjects/pythonProject/source/97/chromedriver.exe', options=options)
driver.maximize_window()    #크롬창 최대화
site_url = '좋아요 버튼을 눌러줄 티스토리 모바일 URL'
driver.get(site_url)

#페이지 스크롤 하여 게시글 더 불러오기 (반복문 횟수를 통해 최대 불러올 게시글 조정 가능)
for i in range(0,10,1):
    driver.find_element_by_tag_name('body').send_keys(Keys.PAGE_DOWN)   #마우스 스크롤 역활하여 게시글 더 불러오기
    time.sleep(0.3)

html = driver.page_source
soup = BeautifulSoup(html, 'html.parser')
link_list = soup.select('.list_post > li > a')  #게시글의 링크 따오기

#새탭을 열어 크롤링한 게시글을 방문
for i in range (len(link_list)):
    site = site_url+link_list[i]['href'].replace('/m','')   #모바일 URL이라 '/m' 이 자동으로 붙어 제거
    driver.execute_script("window.open('');")   #새탭 열기
    driver.switch_to.window(driver.window_handles[1])   #새탭으로 포커스 이동
    driver.get(site)    #위에서 따온 게시글 링크로 이동
    driver.find_element_by_class_name('ico_like1').click()  #좋아요 버튼 클릭
    time.sleep(0.3)
    driver.close()#열었던 탭 닫기
    driver.switch_to.window(driver.window_handles[0]) #다시 탭이 하나밖에 남지 않았으므로 0번 순의 탭으로 포커스 이동

driver.quit()   #모든 탭 종료
반응형

관련글 더보기

댓글 영역