Python 3.6 Как я могу использовать оператор ELSE или DEFAULT для xpath ('@ item'). Get (), если xpath не существует - PullRequest
0 голосов
/ 10 мая 2019

Привет, мы зациклим некоторые ячейки и получим значения, используя xpath('@item').get()

. Почти во всех ячейках есть @item для ячеек, для которых это значение не установлено (вообще). Появляется предупреждение.

Это наш код: item['qty'] = model_cell.xpath('@data-stock').get()

Ошибка: WARNING: Invalid qty (None) at https://example.com

вопрос : как мы можем сделать это умнее с некоторыми if /остальная логика как у троичного оператора.

Логика: попробуйте получить xpath('@data-stock').get(), если он не существует, вернуть значение 0

(или вернуть какое-либо значение по умолчанию, если не найдено)

Пример данных (получить все данныезначения запаса)

<td id=1 data-stock="13"></td>
<td id=2 ></td>
<td id=3 data-stock="11"></td>

возникает проблема @ id = 2 td

Спасибо

Ответы [ 2 ]

0 голосов
/ 10 мая 2019

Предполагая, что model_cell является элементом td, а xpath() из lxml ...

Вам не нужно использовать xpath для получения значения атрибута;Вы можете просто использовать get() со значением по умолчанию.

item['qty'] = model_cell.get('data-stock', 0)
0 голосов
/ 10 мая 2019

Используйте find_elements_by_xpath и получите все элементы тега td, затем пройдитесь по циклу и проверьте атрибут data-stock, если Нет, напечатать что-то еще, напечатать значение атрибута.

 elements=driver.find_elements_by_xpath('..//td')

    for element in elements:
        if element.get_attribute("data-stock") is None:
            print("no item")
        else:
            print(element.get_attribute("data-stock"))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...