[FIXED] Selen erhält keinen Text abhängig vom Wert der ID?

Ausgabe

Ich arbeite derzeit an dieser Website:
https://lawebdelaprimitiva.com/Primitiva/Historico%20de%20sorteos/1986.html
Tring, um die Werte der Kugeln zu erhalten, bisher kann ich nur die 7 ersten Werte mit for erhalten Schleife, die ich unten anfüge, aber anscheinend das achte zu extrahierende Mitglied erreicht hat, ist, als hätten sie keinen Text in ihrer Struktur.

web='https://lawebdelaprimitiva.com/Primitiva/Historico%20de%20sorteos.html'
driver=webdriver.Chrome(path)
driver.get(web)
lispes=driver.find_element("id","anio")
opciones = lispes.find_elements(By.TAG_NAME, "option")
opciones[-2].click()
for bola in range(20):
    print("--------")
    name='id_sorteo' + str(bola)
    print(name)
    linea=driver.find_element(By.ID, name).text
    print(linea)
driver.close()

Ich habe auch versucht, den Wert zu erhalten, indem ich nicht die ID, sondern den Titel verwendet habe und dieselben Ergebnisse erhalten habe. Bei den 7 ersten Mitgliedern funktioniert es, aber beim 8. und so weiter funktioniert es nicht:

linea2=driver.find_element(By.XPATH, '//*[@title="Jueves 30 de Octubre de 1986"]').text
print(linea2)

Irgendeine Idee? Vielen Dank

Lösung

Hier ist eine mögliche Lösung:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.select import Select
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC


options = webdriver.ChromeOptions()
options.add_experimental_option("excludeSwitches", ["enable-automation", "enable-logging"])

service = Service(executable_path='path\to\your\chromedriver.exe')
driver = webdriver.Chrome(service=service, options=options)
wait = WebDriverWait(driver, 10)

url = 'https://lawebdelaprimitiva.com/Primitiva/Historico%20de%20sorteos/1985.html'
driver.get(url)
# accept cookies
wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, 'button[aria-label="Consentir"]'))).click()
# get all dates
dates = driver.find_elements(By.CSS_SELECTOR, 'select[name="anio"] option')

for idx in reversed(range(len(dates))):
    # select date
    Select(driver.find_element(By.ID, 'anio')).select_by_index(idx)
    print(f"{driver.current_url.split('/')[-1].split('.')[0]} year")
    # get all raffles in the current date
    raffles = driver.find_elements(By.CSS_SELECTOR, 'div[class="title"] ul')
    for raffle in raffles:
        # scroll to current raffle
        driver.execute_script("arguments[0].scrollIntoView(true);", raffle)
        print(raffle.text)

driver.quit()

Ausgabe:

1985 year
J-19-12 5 28 30 34 39 44 15 0  4/2 10131  1/5  1  
J-12-12 2 5 7 43 48 49 11 0  2/4 30003  3/3  0  
J-5-12 4 14 23 27 30 40 12 0  4/2 11211  3/3  0  
J-28-11 9 17 20 34 41 47 11 0  2/4 11112  3/3  0  
J-21-11 6 15 35 44 46 48 38 0  4/2 11013  2/4  0  
J-14-11 19 22 34 36 37 43 38 0  3/3 01131  2/4  3  
J-7-11 2 9 14 19 34 43 49 0  3/3 22011  4/2  1  
J-31-10 10 14 29 33 46 48 30 0  4/2 02112  2/4  1  
J-24-10 5 16 18 29 43 44 2 0  3/3 12102  3/3  0  
J-17-10 3 11 13 15 34 35 27 0  1/5 13020  4/2  
1986 year
J-18-12 10 16 17 22 39 48 15 0  4/2 03111  4/2  1  
J-11-12 5 25 39 41 43 45 18 0  0/6 10113  2/4  0  
J-4-12 2 6 9 10 24 48 11 0  5/1 31101  5/1  0  
J-27-11 4 20 25 37 41 46 31 0  3/3 10212  3/3  1  
J-20-11 3 4 10 19 23 30 26 0  3/3 22110  5/1  1  
J-13-11 1 6 26 30 41 43 18 0  3/3 20112  2/4  0  
J-6-11 17 22 28 40 42 46 27 0  5/1 01203  2/4  1  
J-30-10 1 10 26 34 42 48 11 0  5/1 11112  2/4  1  
J-23-10 2 12 21 30 35 48 42 0  4/2 11121  3/3  1   
...


Beantwortet von –
Lenta


Antwort geprüft von –
Dawn Plyler (FixError Volunteer)

0 Shares:
Leave a Reply

Your email address will not be published. Required fields are marked *

You May Also Like