Как я могу очистить эти данные с помощью Selenium? - PullRequest
0 голосов
/ 27 марта 2020

Я пытаюсь очистить этот сайт с помощью Selenium: https://results.decisiondeskhq.com/2020/primary/colorado/president (если вы хотите проверить элемент, вы должны создать быстрый аккаунт для входа в систему и просмотреть таблицу, которую я пытаюсь очистить) , Похоже, нет никаких согласованных атрибутов для различных элементов (Кандидат, Голоса, Pct). Как бы я go по поводу очистки?

HTML таблицы:

<table class="v-datatable v-table theme--light"><thead><tr><th style="padding-right: 5px; text-align: center;">

  </th><th style="padding-right: 5px; text-align: left;">
    CANDIDATE
  </th><th style="padding-right: 5px; text-align: right;">
    VOTES
  </th><th style="padding-right: 5px; text-align: right;">
    PCT%
  </th><th style="padding-right: 5px; text-align: right;">

  </th></tr><tr class="v-datatable__progress"><th colspan="5" class="column"></th></tr></thead><tbody><tr><td style="text-align: center;"><i aria-hidden="true" class="v-icon material-icons theme--light" style="color: rgb(37, 116, 169); font-size: 1.2em;">brightness_1</i></td> <td class="winner">Bernie 
    Sanders
    <!----></td> <td class="winner" style="text-align: right;">
      355,293
    </td> <td class="winner" style="text-align: right;">
      37.00%
    </td> <td style="padding: 0px 3px;"><i aria-hidden="true" class="v-icon material-icons theme--light" style="color: rgb(87, 174, 166); font-size: 1.2em; font-weight: 700;">check</i></td></tr><tr><td style="text-align: center;"><i aria-hidden="true" class="v-icon material-icons theme--light" style="color: rgb(0, 136, 255); font-size: 1.2em;">brightness_1</i></td> <td class="">Joe 
    Biden
    <!----></td> <td class="" style="text-align: right;">
      236,565
    </td> <td class="" style="text-align: right;">
      24.64%
    </td> <td style="padding: 0px 3px;"><!----></td></tr><tr><td style="text-align: center;"><i aria-hidden="true" class="v-icon material-icons theme--light" style="color: rgb(98, 202, 255); font-size: 1.2em;">brightness_1</i></td> <td class="">Michael 
    Bloomberg
    <!----></td> <td class="" style="text-align: right;">
      177,727
    </td> <td class="" style="text-align: right;">
      18.51%
    </td> <td style="padding: 0px 3px;"><!----></td></tr><tr><td style="text-align: center;"><i aria-hidden="true" class="v-icon material-icons theme--light" style="color: rgb(197, 239, 247); font-size: 1.2em;">brightness_1</i></td> <td class="">Elizabeth 
    Warren
    <!----></td> <td class="" style="text-align: right;">
      168,695
    </td> <td class="" style="text-align: right;">
      17.57%
    </td> <td style="padding: 0px 3px;"><!----></td></tr><tr><td style="text-align: center;"><i aria-hidden="true" class="v-icon material-icons theme--light" style="color: rgb(62, 0, 119); font-size: 1.2em;">brightness_1</i></td> <td class="">Tulsi 
    Gabbard
    <!----></td> <td class="" style="text-align: right;">
      10,037
    </td> <td class="" style="text-align: right;">
      1.05%
    </td> <td style="padding: 0px 3px;"><!----></td></tr><tr><td style="text-align: center;"><i aria-hidden="true" class="v-icon material-icons theme--light" style="color: rgb(25, 181, 254); font-size: 1.2em;">brightness_1</i></td> <td class="">Andrew 
    Yang
    <!----></td> <td class="" style="text-align: right;">
      3,988
    </td> <td class="" style="text-align: right;">
      0.42%
    </td> <td style="padding: 0px 3px;"><!----></td></tr><tr><td style="text-align: center;"><i aria-hidden="true" class="v-icon material-icons theme--light" style="color: rgb(3, 201, 169); font-size: 1.2em;">brightness_1</i></td> <td class="">Tom 
    Steyer
    <!----></td> <td class="" style="text-align: right;">
      3,323
    </td> <td class="" style="text-align: right;">
      0.35%
    </td> <td style="padding: 0px 3px;"><!----></td></tr><tr><td style="text-align: center;"><i aria-hidden="true" class="v-icon material-icons theme--light" style="color: rgb(52, 73, 94); font-size: 1.2em;">brightness_1</i></td> <td class="">Cory 
    Booker
    <!----></td> <td class="" style="text-align: right;">
      1,276
    </td> <td class="" style="text-align: right;">
      0.13%
    </td> <td style="padding: 0px 3px;"><!----></td></tr><tr><td style="text-align: center;"><i aria-hidden="true" class="v-icon material-icons theme--light" style="color: rgb(171, 183, 183); font-size: 1.2em;">brightness_1</i></td> <td class="">Roque 
    De La Fuente III
    <!----></td> <td class="" style="text-align: right;">
      1,136
    </td> <td class="" style="text-align: right;">
      0.12%
    </td> <td style="padding: 0px 3px;"><!----></td></tr><tr><td style="text-align: center;"><i aria-hidden="true" class="v-icon material-icons theme--light" style="color: rgb(179, 157, 219); font-size: 1.2em;">brightness_1</i></td> <td class="">Marianne 
    Williamson
    <!----></td> <td class="" style="text-align: right;">
      1,086
    </td> <td class="" style="text-align: right;">
      0.11%
    </td> <td style="padding: 0px 3px;"><!----></td></tr><tr><td style="text-align: center;"><i aria-hidden="true" class="v-icon material-icons theme--light" style="color: rgb(102, 51, 153); font-size: 1.2em;">brightness_1</i></td> <td class="">Rita  
    Krichevsky
    <!----></td> <td class="" style="text-align: right;">
      445
    </td> <td class="" style="text-align: right;">
      0.05%
    </td> <td style="padding: 0px 3px;"><!----></td></tr><tr><td style="text-align: center;"><i aria-hidden="true" class="v-icon material-icons theme--light" style="color: rgb(225, 190, 231); font-size: 1.2em;">brightness_1</i></td> <td class="">Robby 
    Wells
    <!----></td> <td class="" style="text-align: right;">
      330
    </td> <td class="" style="text-align: right;">
      0.03%
    </td> <td style="padding: 0px 3px;"><!----></td></tr><tr><td style="text-align: center;"><i aria-hidden="true" class="v-icon material-icons theme--light" style="color: rgb(200, 155, 255); font-size: 1.2em;">brightness_1</i></td> <td class="">Deval 
    Patrick
    <!----></td> <td class="" style="text-align: right;">
      227
    </td> <td class="" style="text-align: right;">
      0.02%
    </td> <td style="padding: 0px 3px;"><!----></td></tr><tr><td style="text-align: center;"><i aria-hidden="true" class="v-icon material-icons theme--light" style="color: rgb(102, 203, 178); font-size: 1.2em;">brightness_1</i></td> <td class="">Pete 
    Buttigieg
    <!----></td> <td class="" style="text-align: right;">
      0
    </td> <td class="" style="text-align: right;">
      0%
    </td> <td style="padding: 0px 3px;"><!----></td></tr><tr><td style="text-align: center;"><i aria-hidden="true" class="v-icon material-icons theme--light" style="color: rgb(160, 242, 184); font-size: 1.2em;">brightness_1</i></td> <td class="">John K 
    Delaney
    <!----></td> <td class="" style="text-align: right;">
      0
    </td> <td class="" style="text-align: right;">
      0%
    </td> <td style="padding: 0px 3px;"><!----></td></tr><tr><td style="text-align: center;"><i aria-hidden="true" class="v-icon material-icons theme--light" style="color: rgb(78, 38, 178); font-size: 1.2em;">brightness_1</i></td> <td class="">Amy 
    Klobuchar
    <!----></td> <td class="" style="text-align: right;">
      0
    </td> <td class="" style="text-align: right;">
      0%
    </td> <td style="padding: 0px 3px;"><!----></td></tr></tbody><tfoot><tr><td colspan="100%"><div class="candidate-toggle">Show Less Candidates</div></td></tr></tfoot></table>

Мой код пока:

    from login_info import *
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By


driver = webdriver.Chrome(executable_path="/users/aliallam/Desktop/scraper test/chromedriver")
url = 'https://results.decisiondeskhq.com/2020/primary/colorado/president'
driver.get(url)



# Bypass loading page and click login link
delay = 10  # seconds
login_button = WebDriverWait(driver, delay).until(
    EC.presence_of_element_located((By.ID, 'login-text-btn')))

driver.execute_script("arguments[0].click();", login_button)
##

# Login
email = driver.find_element_by_xpath('//*[@id="content"]/div/div/div/form/div[2]/div/div[1]/div/input')
email.send_keys(login_email)

password = driver.find_element_by_xpath('//*[@id="content"]/div/div/div/form/div[3]/div/div[1]/div/input')
password.send_keys(login_pass)

login_button_actual = driver.find_element_by_xpath('//*[@id="content"]/div/div/div/form/button/div')
login_button_actual.click()
##

Заранее спасибо! !

1 Ответ

0 голосов
/ 27 марта 2020

Вы можете использовать ниже xpath для обработки элементов из таблицы. На основании ваших требований вы можете использовать xpath и обрабатывать данные.

Получить все tr и td

//div[@class='top-line-table']//tbody//tr[*]/td 

Получить первую строку

//div[@class='top-line-table']//tbody//tr[1]/td 

Получить первые столбцы

//div[@class='top-line-table']//tbody//td[1]

Обрабатывать thead

//div[@class='top-line-table']//thead/tr[1]/th
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...