Saya mengklik tautan tertentu dan ingin membaca semua teks di kelas tertentu dan mengembalikannya sebagai baris dalam kerangka data pandas

Ini adalah kode yang saya miliki

page_link = 'http://beta.compuboxdata.com/fighter'
wait = WebDriverWait(cdriver,10)
wait.until(EC.visibility_of_element_located((By.ID,'s2id_autogen1'))).send_keys('Deontay Wilder')
wait.until(EC.visibility_of_element_located((By.CLASS_NAME, 'select2-result-label'))).click()
while True:
    wait.until(EC.visibility_of_element_located((By.CLASS_NAME, 'view_more'))).click()
    try:
        element = wait.until(EC.visibility_of_element_located((By.CLASS_NAME, 'view_more')))
        element.click()
    except TimeoutException:
        break
fights['fighters'] = wait.until(EC.find_element_by_class_name((By.CLASS_NAME,'col-xs-4 col-sm-4 col-md-4 col-lg-4'))).text

Namun, ini mengembalikan pesan kesalahan:

TimeoutException: Message: 

Saya juga sudah mencoba menggunakan xpath tetapi masih mendapatkan pesan kesalahan yang sama:

fights['fighters'] = wait.until(EC.find_element_by_xpath((By.CLASS_NAME,'//div[@class="col-xs-4 col-sm-4 col-md-4 col-lg-4"]/div'))).text

Saya secara khusus ingin mendapatkan data ini: masukkan deskripsi gambar di sinisource python pandas selenium selenium-webdriver

1
Emm 4 Desember 2019, 17:44

1 menjawab

Jawaban Terbaik

Berikut adalah solusi. Pengecualian Timeout akan ditangani di sini.

    age_link = 'http://beta.compuboxdata.com/fighter'
driver.get(age_link)
wait = WebDriverWait(driver,10)
wait.until(EC.visibility_of_element_located((By.ID,'s2id_autogen1'))).send_keys('Deontay Wilder')
wait.until(EC.visibility_of_element_located((By.CLASS_NAME, 'select2-result-label'))).click()
#Click on View More until it exists
while True:
    try:
        element = wait.until(EC.visibility_of_element_located((By.CLASS_NAME, 'view_more')))
        print("Clicking on View More")
        element.click()
    except TimeoutException:
        break
fighters = driver.find_elements_by_xpath("//div[@class='row row-bottom-margin-5']/div[2]")
#fighters = driver.find_elements_by_class_name("col-xs-4 col-sm-4 col-md-4 col-lg-4")
print(len(fighters))
# Print all the fighter names
for fighter in fighters:
    print(fighter.text)    
0
Sureshmani 4 Desember 2019, 21:20