How to use lxml to find an element by text?

前端 未结 2 922
北荒
北荒 2020-12-25 13:05

Assume we have the following html:


    
        TEXT A
        T         


        
2条回答
  •  悲&欢浪女
    2020-12-25 13:13

    You are very close. Use text()= rather than @text (which indicates an attribute).

    e = root.xpath('.//a[text()="TEXT A"]')
    

    Or, if you know only that the text contains "TEXT A",

    e = root.xpath('.//a[contains(text(),"TEXT A")]')
    

    Or, if you know only that text starts with "TEXT A",

    e = root.xpath('.//a[starts-with(text(),"TEXT A")]')
    

    See the docs for more on the available string functions.


    For example,

    import lxml.html as LH
    
    text = '''\
    
        
            TEXT A
            TEXT B
            TEXT C
        
    '''
    
    root = LH.fromstring(text)
    e = root.xpath('.//a[text()="TEXT A"]')
    print(e)
    

    yields

    []
    

提交回复
热议问题