Как проверить, существует ли элемент в lxml xpath?

Я использую lxml xpath для анализа HTML-страницы в Python 3.

В качестве примера у меня есть код, который находит элемент HTML:

version_android  = doc.xpath("//div[@itemprop='operatingSystems']//text()")

Отец, у меня есть запрос Mysql:

insert = ("insert into tracks (version) values ('%s')" % (version_android[0]))

Проблема в том, что if не является элементом в HTML DOM, поэтому я получаю ошибку Mysql, когда пытаюсь получить проанализированный результат в строке: version[0] и ввести запрос.

Иногда результирующий массив не имеет индекса version_android[0], но имеет индекс version_android[2]: Это приводит к ошибке в функции вставки Mysql.

Как я могу подтвердить это правильно? У меня много одинаковых правил разбора.

Я пробовал это, но мне не нравится это решение:

version_android = doc.xpath("//div[@itemprop='operatingSystems']//text()")
        if len(version_android):
            version_android = version_android[0]
        else:
            version_android = ""

person Huligan    schedule 21.12.2016    source источник
comment
stackoverflow.com/a/5690522/4249707   -  person El Ruso    schedule 14.01.2017


Ответы (1)


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

#valid_xpath = '__VIEWSTATEGENERATOR'
invalid_xpath = 'XXXXXXXX'

try:
    vgenerator = root.xpath('//*[@id="'+ invalid_xpath +'"]//@value')[0]
except IndexError:
    vgenerator = None 

print vgenerator
person nguaman    schedule 13.01.2017