В настоящее время я пишу игру The Cookie Cutter из книги Анжелы Ю «100 дней кода»,
цель — получить как можно больше кликов за период 5 минут, проверяя каждые 5 секунд наличие денег (я назвал это «баллом»), которые я накопил, чтобы я мог приобрести максимально возможное обновление.
это решение Анжелы на Github:
Я считаю, что это долго и неоправданно сложно.
Мой код немного беспорядочный, так как он все еще находится в стадии разработки.
то, что я хотел сделать со своим кодом, - это перебрать каталог, содержащий #id и цену обновления, и как только он распознает соответствие возможной покупке, он нажимает на него.
Код: Выделить всё
import threading
import time
from collections import defaultdict
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from threading import Thread
from time import sleep
from datetime import datetime, timedelta
chrome_options = webdriver.ChromeOptions()
chrome_options.add_experimental_option("detach", True)
driver = webdriver.Chrome(options=chrome_options)
driver.get("https://orteil.dashnet.org/experiments/cookie/")
driver.maximize_window()
#######################ELEMENTS & CONVERTING TO LISTS\DICT#######################
cookie = driver.find_element(By.CSS_SELECTOR, '#cookie')
score = driver.find_element(By.CSS_SELECTOR, '#money')
scoreNum = int(score.text)
all_prices = driver.find_elements(By.CSS_SELECTOR, '#store b')
all_ids = driver.find_elements(By.CSS_SELECTOR, '#store div')
new_all_prices = []
new_all_ids = []
for new_id in all_ids:
new_all_ids.append(new_id.get_attribute("id"))
for price in all_prices:
a, b, c = price.text.partition('-')
new_price = c.replace(" ", "")
if c == "":
pass
else:
new_all_prices.append(c.replace(" ", ""))
tuples = [(key, value)
for i, (key, value) in enumerate(zip(new_all_prices, new_all_ids))]
myDict = dict(tuples)
#######################FUNCTIONS#######################
def five_seconds_check():
for key, value in myDict.items():
if scoreNum >= key:
my_clickable_purchase = driver.find_element(By.CSS_SELECTOR, f'{myDict[key]}')
my_clickable_purchase.click()
timeout = time.time() + 5
five_min = time.time() + 60 * 5 # 5 minutes
while True:
cookie.click()
if time.time() > timeout:
five_seconds_check()
elif time.time() > five_min:
break
#########################CLOSING BROWSER#########################
time.sleep(5)
driver.close()
Подробнее здесь: https://stackoverflow.com/questions/786 ... in-a-timer