简体   繁体   English

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

[英]How check if element exist in lxml xpath?

I use lxml xpath for parsing HTML page in Python 3. 我使用lxml xpath在Python 3中解析HTML页面。

As sample I have code, that finds element HTML: 作为示例,我有代码,可以找到元素HTML:

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

Father I have insert Mysql query: 父亲,我有插入Mysql查询:

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

Problem is, that if is not element in HTML DOM, therefore I get Mysql error when I try to get parsed result in line: version[0] and put in query. 问题是,如果不是HTML DOM中的元素,那么当我尝试在以下行获取解析结果时,会出现Mysql错误: version[0]并放入查询中。

Sometimes result array does not have index version_android[0] , but has index version_android[2] : It makes error in insert function Mysql. 有时结果数组没有索引version_android[0] ,但是具有索引version_android[2] :在插入函数Mysql中出错。

How can I validate this correct? 我如何验证这个正确? I have a lot the same rules for parsing. 我有很多相同的解析规则。

I tried this, but I dislike this solution: 我尝试了这个,但是我不喜欢这个解决方案:

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

I think the better way (In my opinion) is using the except. 我认为更好的方法(在我看来)是使用except。

#valid_xpath = '__VIEWSTATEGENERATOR'
invalid_xpath = 'XXXXXXXX'

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

print vgenerator

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM