Селен веб-браузер: Как извлечь несколько имен атрибутов по итерации? - PullRequest
0 голосов
/ 28 октября 2019

Я пытаюсь удалить данные (время отправления, перевозчик, цена и т. Д.) С платформы поиска поездов (https://www.thetrainline.com), и у меня возникает проблема с извлечением имен атрибутов. HTML для всех соединений выглядит следующим образом, и я хочу получить список всех носителей, т.е. я хочу получить из атрибута "data-test-carrier-neme" соответствующий носитель, здесь "trenitalia".

div class="_1moixrt _dtnn7w" tabindex="0"span data-test-carrier-name="trenitalia"

Например, для случаев, когда я просто собираю текст атрибутов итерацией (см. Синтаксис)Теперь для носителя мне не удается собрать имена атрибутов. Я получаю только имя носителя для первой итерации / первого соединения, но не для следующих соединений.

dep_times = driver.find_elements_by_xpath('//div[@class="_1rxwtew "]')
dep_times_list = [x.text for x in dep_times]

# Первый подход: Я получаю имя атрибута, но только для первого соединения

carrier1 = driver.find_elements_by_xpath('(//div[@class="_1moixrt _dtnn7w"])[1]/span[1]')

carrier1_list = [x.get_attribute("data-test-carrier-name") for x in carrier1]

Вывод: ['trenitalia']

# Второй подход: Я получаю доступ к атрибутам всех соединений, но без получения имени атрибута:

carrier1 = driver.find_elements_by_xpath('(//div[@class="_1moixrt _dtnn7w"])[1]/span[1]')

carrier1_list = [x.get_attribute("data-test-carrier-name") for x in carrier1]

Вывод: [Нет, Нет, Нет, Нет, Нет, Нет]

Может ли кто-нибудь изменить мой код для решения моей проблемы? Большое спасибо за помощь !!

1 Ответ

0 голосов
/ 28 октября 2019

xpath, который используется в первом подходе, возвращает только один элемент, и поэтому в результате отображается только имя первого носителя. Попробуйте это - я только что удалил индекс [1] из вашего xpath.

carrier1 = driver.find_elements_by_xpath('(//div[@class="_1moixrt _dtnn7w"])/span[1]')

carrier1_list = [x.get_attribute("data-test-carrier-name") for x in carrier1]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...