Sudoku wird erfasst, aber Selenium hat es mit Chrome in HTML nicht gefundenPython

Python-Programme
Anonymous
 Sudoku wird erfasst, aber Selenium hat es mit Chrome in HTML nicht gefunden

Post by Anonymous »

Ich versuche, dieses Sudoku mit Selenium und Python zu erfassen, nachdem ich das Cookie akzeptiert habe.
Mit diesem Code könnte ich das Cookie im Iframe akzeptieren und die Hauptseite zum Debuggen in die Ausgabedatei schreiben:

Code: Select all

from selenium.webdriver import Chrome, ChromeOptions
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import (
TimeoutException,
NoSuchElementException,
WebDriverException,
)
import time

BOOKING_URL = "https://www.prisma.de/raetsel/epaper/ra8IU0"

def get_webdriver() -> Chrome:

options = ChromeOptions()

options.add_argument(
"user-agent=Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) "
"AppleWebKit/537.36 (KHTML, like Gecko) "
"Chrome/124.0.0.0 Safari/537.36"
)

options.page_load_strategy = 'normal'
try:
driver = Chrome(options=options)
return driver
except WebDriverException as e:
raise

def _wait_for_cookie(driver) -> None:

try:
WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.XPATH,'//iframe')))
except TimeoutException:
print("Timeout waiting for cookie.")
try:
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH,"//button[contains(., 'Einwilligen')]"))).click()
except TimeoutException:
print("Timeout waiting for cookie.")

time.sleep(3)
driver.switch_to.default_content()
with open("output.html", "w", encoding="utf-8") as f:
f.write(driver.page_source)
print (driver.find_elements(By.XPATH,"//div[contains(., 'k-board k-board--html')]"))

def check_riddle(url: str = BOOKING_URL) -> bool:

driver = None
try:
driver = get_webdriver()

driver.get(url)
print(driver.current_url)

time.sleep(5)
_wait_for_cookie(driver)
except Exception as exc:
print("Error during riddle check: %s", exc)
raise
finally:
if driver:
try:
driver.quit()
print("WebDriver closed.")
except Exception as exc:
print("Error closing WebDriver: %s", exc)

if __name__ == "__main__":
check_riddle()
Danach kann ich das Sudoku in meinem Chrome-Browser sehen, aber das Skript findet kein „k-board k-board--html“ usw. Außerdem gibt es in der Datei „output.html“ nur das Hauptmenü.
Wie finde ich den richtigen Div-Container auf der Website? Danach kann ich die Kästchen und die Zahl in eine Sudoku-Zeichenfolge umwandeln.
Image

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post