find_elements - Selenium (Python): как заполнить нулями (или другими значениями) вместо пустых - PullRequest
0 голосов
/ 03 февраля 2020

Доброе утро,

Я пытаюсь сделать проект утилизации. Я ожидаю список 600 значений после запуска проекта, но я получаю список с 450 значениями.

Мне известно, что FindElements создаст список с найденными значениями, но мне интересно, есть ли способ получить список с 600 значениями.

Я думал, что смогу заполнить не нашел значения с помощью na, но я не могу найти правильный путь. Если я не ошибаюсь, я должен добавить nan, когда i.text пуст. Вот мой код:

def Prices():
    global prices
    global prices2
    prices=[]
    try:  
        for i in driver.find_elements_by_class_name('eur'):
            if i.text != "":
                prices.append(i.text)
            else:
                prices.append(np.nan)
        print(prices)
    except NoSuchElementException as e:
        print (e)
        return prices

Тогда я подумал. Если я не могу добавить нан, я могу добавить другой элемент. Поэтому я нашел другой элемент для удаления и использовал следующий код:

    def Prices_function():
        prices=[]
        try:  
            for i in driver.find_elements_by_class_name('eur'):
                if i.text != "":   
                    prices.append(i.text)
                else:
                    for i in driver.find_elements_by_class_name('eur_m'):
                        prices.append(i.text)        

      print(prices)
        except NoSuchElementException as e:
            print (e)
            return prices


Но этот код тоже не работал. Интересно, почему ни один из этих кодов не работает?

Может ли кто-нибудь помочь мне понять их?

Большое спасибо за вашу помощь !!

1 Ответ

0 голосов
/ 03 февраля 2020

Чтобы найти все 600 элементов, вы можете использовать css_selector, которые определяют местонахождение элементов с классом eur или с классом eur_m

 elements = driver.find_elements_by_css_selector('.eur, .eur_m')

Вы также можете найти элементы, которые начинаются с класса eur , но он может найти больше элементов, зависит от html

elements = driver.find_elements_by_css_selector('[class^="eur"]')

и получить текст

prices = [el.text for el in elements]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...