如何检查lxml xpath中是否存在元素?

时间:2016-12-21 16:38:26

标签: python python-3.x lxml lxml.html

我使用lxml xpath在Python 3中解析HTML页面。

作为示例,我有代码,找到元素HTML:

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

父亲我已插入Mysql查询:

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

问题是,如果不是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 = ""

1 个答案:

答案 0 :(得分:2)

我认为更好的方式(在我看来)是使用except。

#valid_xpath = '__VIEWSTATEGENERATOR'
invalid_xpath = 'XXXXXXXX'

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

print vgenerator