일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 프로젝트
- 부트스트랩
- 웹크롤링
- ndarray
- 최저가
- Pygame
- 쉬티
- Sheety
- 계산기
- 웹페이지
- Python
- class
- API플랫폼
- 게임
- 파이썬
- udemy
- 오류
- API
- SMTP
- HTTP
- 상태코드
- Game
- HTML
- twilio
- 유데미
- 파싱
- Tequila
- 프로그램
- phython
- Endpoint
- Today
- Total
데이터 분석가
쿠키 클릭커(Cookie Clicker) 자동 프로그램 본문
안녕하세요!
쿠키 클릭커(Cookie Clicker)이라는 게임을 아시나요 ??
정말 클릭만으로 하는 정 단순한 게임인데요,
왼쪽에 있는 쿠키를 클릭한 값을 모아서 여러가지 기능을 사는 게임이에요
이거 게임이 아니라 고문인거 같은데요 ??
오토마우스 앱을 이용해서 쿠키를 늘려갈 수 있겠네요, 하지만 단순히 클릭만 해서는 기능을 이용할 수 없어요
그렇기에 Selenium 라이브러리를 통해 chrome 을 제어해서 오른쪽 기능을 구입해서
초당 쿠키 생산을 최대로 늘려보겠습니다 !
from selenium import webdriver
from selenium.webdriver.common.by import By
import time
# Chrome 드라이버 경로 지정
chrome_driver_path = "Your Path"
# 웹 드라이버 실행
driver = webdriver.Chrome(executable_path=chrome_driver_path)
브러우저 자동화를 위한 라이브러리인 Selenium을 이용해 webdriver 메서드를 불러와
브랄우저를 제어합니다. 'By'를 이용해 웹 페이지 요소를 찾아 지정합니다
경로 지정 후 실행 시킵시다
# 쿠키 클릭하는 웹페이지 접속
driver.get("http://orteil.dashnet.org/experiments/cookie/")
# 쿠키 클릭 버튼 element 찾기
cookie = driver.find_element(By.ID, "cookie")
# 아이템 가격 element들 찾기
items = driver.find_elements(By.CSS_SELECTOR, "#store div")
item_ids = [item.get_attribute("id") for item in items]
쿠키 클릭커 사이트에서 api를 get하고
HTML 구성 요소 중 클릭 할 쿠키의 요소의 ID를 지정합니다
클릭하여 얻은 값으로 오른쪽 기능 아이템들을 구입해야 하므로 CSS_SELECTOR을 이용해
HTML 구성 요소 중 #store div 지정합니다
# 10초 후에 새로운 가격 업데이트를 체크하기 위한 timeout 설정
timeout = time.time() + 10
# 30분 후에 스크립트 종료하기 위한 time 설정
five_min = time.time() + 60*30 # 5minutes
10초마다 누적된 클릭 값으로 오른쪽 기능 아이템들을 체크합니다
위 코드를 통한 스크립트는 30분까지만 작동 됩니다
while True:
# 쿠키 클릭
cookie.click()
# 10초가 지나면 현재 아이템 가격들 체크
if time.time() > timeout:
all_prices = driver.find_elements(By.CSS_SELECTOR, "#store b")
item_prices = []
# 아이템 가격 파싱
for price in all_prices:
element_text = price.text
if element_text != "":
cost = int(element_text.split("-")[1].strip().replace(",", ""))
item_prices.append(cost)
# 아이템 가격과 아이템 id 매칭
cookie_upgrades = {}
for n in range(len(item_prices)):
cookie_upgrades[item_prices[n]] = item_ids[n]
# 현재 보유한 쿠키 수 파싱
money_element = driver.find_element(By.ID, "money").text
if "," in money_element:
money_element = money_element.replace(",", "")
cookie_count = int(money_element)
# 구매 가능한 아이템들과 가격 파싱
affordable_upgrades = {}
for cost, id in cookie_upgrades.items():
if cookie_count > cost:
affordable_upgrades[cost] = id
# 구매 가능한 가장 비싼 아이템 구하기
highest_price_affordable_upgrade = max(affordable_upgrades)
print(highest_price_affordable_upgrade)
to_purchase_id = affordable_upgrades[highest_price_affordable_upgrade]
# 구매 실행
driver.find_element(By.ID, to_purchase_id).click()
# 10초 후에 다시 업데이트 체크하기 위한 timeout 설정
timeout = time.time() + 10
# 30분이 지나면 스크립트 종료
if time.time() > five_min:
cookie_per_s = driver.find_element(By.ID, "cps").text
print(cookie_per_s)
break
자동으로 클릭을 시전하고,
미리 설정해 놓은 timeout( 10초 )가 지나가면 아이템 가격을 체크한 후,
모아놓은 값을 기준으로 파싱한 아이템 값 중 구매할 수 있는 가장 비싼 값의
아이템을 구매합니다.
위 사항은 10초마다 반복되고 30분이 지나 스크립트가 종료되면,
초당 쿠키 생산 수를 터미널에 반환 후 종료합니다.
작동이 잘 되네요 ~
손이 고생할 일이 없겠어요!
'파이썬(python) 프로젝트 모음' 카테고리의 다른 글
아마존 자동 가격 추적기 프로그램 (0) | 2023.04.20 |
---|---|
웹크롤링을 이용한 영화추천 목록 프로그램 (0) | 2023.04.19 |
파이썬 최저가 항공권 티켓 알림 프로젝트 (0) | 2023.04.10 |
파이썬 쉬티(Sheety) & 운동 추적(Nutritionix) 프로그램 (0) | 2023.04.07 |
파이썬 국제 우주 정거장(ISS) 추적 프로그램 (0) | 2023.04.06 |