:::: 개발 ::::/:::: PYTHON(파이썬) ::::

셀레니움 카카오 클릭 기부(같이가치) 1차 로그인 ~ 응원 하트 클릭 까지

nayha 2022. 2. 25. 22:51

좋은행동 칭찬합니다 같이가치 사이트 흥하시길

클릭 기부하고 싶은데 

예전에는 어린이들만 했다.. 왜 그랬는지 노인들은 싫었는데 ㅎㅎ

이제 40대가 되니  에헴 

 

여하튼 생각날때마다 들어가서 

응원 (하트) 누리고 댓글을 달았다

 

그래도 개발자인데 한방에 하는 방법이 없을까 하다 크롤링 배워서 해보기로 함

 

그래서 백수기념으로 한번 만들어봤다 

재밌다 파이썬

 

겁나 빠르게 90개 정도 9천원 !!! 기부ㅋㅋ

 

코드 참고 하시고 시간 되시는 분 파이썬 돌려서 기부해주시면 좋을 거 같다 

시간 되면 댓글까지 할 예정

 

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import pyautogui
import pyperclip
import time


#브라우저 생성
browser = webdriver.Chrome()

#로그인
def kakao_login():
    login ='https://accounts.kakao.com/login/together?continue=https%3A%2F%2Ftogether.kakao.com%2Ffundraisings%2Fnow'
    browser.implicitly_wait(2)  # 로딩 기다림
    browser.maximize_window() # 화면 최대환
    browser.get(login)

    #아이디 입력 #id_email_2
    browser.find_element_by_css_selector("#id_email_2_label").click()
    #id.send_keys('nayha77')  #이렇게 하면 bot 감지 대상
    pyperclip.copy('카카오아이디')
    pyautogui.hotkey('ctrl','v')
    time.sleep(2)

    #비밀번호 입력 #id_password_3
    browser.find_element_by_css_selector('#id_password_3_label').click()
    pyperclip.copy('카카오비밀번호')
    pyautogui.hotkey('ctrl','v')
    time.sleep(2)

    #로그인 버튼 
    login_send = browser.find_element_by_css_selector("#login-form > fieldset > div.wrap_btn > button.btn_g.btn_confirm.submit")
    login_send.click()



#웹사이트 열기
browser.get('https://together.kakao.com/fundraisings/now')
browser.implicitly_wait(3) #로딩이 끝날 때까지 10초까지는 기다려줌
kakao_login() #로그인 

#스크롤 전 높이
before_h = browser.execute_script("return document.body.scrollHeight")

#무한 스크롤 제일 하단까지 이동
while True:
    # 맨 아래로 스크롤 내린다.
    browser.find_element_by_css_selector('body').send_keys(Keys.END)
    time.sleep(1)     # 스크롤 사이 페이지 로딩 시간

    # 스크롤 후 높이 
    after_h = browser.execute_script("return window.scrollY")

    # 스크롤 전 후 같으면 while 탈출
    # 같지 않으면 스크롤 후 높이를 스크롤 이전 변수에 할당한다.
    if after_h == before_h:
        break
    before_h = after_h

# 상품 정보 div 에서 URL 정보 가져온다
items = browser.find_elements_by_css_selector('.listcard')

#  기부 URL 배열
link_url = []
for item in items:
    try:
        link_pack = item.find_element_by_css_selector('.link_pack').get_attribute('href')
        link_url.append(link_pack)
    except:
        pass

# 가져온 링크 하나씩 접속
#for idx in range(1,3):  #테스트 3개만
for idx in range(len(link_url)):
    try:
        browser.get(link_url[idx])
    except:
        print("Time Out!")
        continue

    ######## 접속한 URL에서 응원 클릭 받아오기 ########
    try:
        browser.find_element_by_css_selector('#mArticle > div.fund_float > button.btn_g.btn_cheer').click()
    except:
        browser.switch_to_alert().alert()
        print("게시글이 삭제된 경우입니다.")
        continue
반응형