【问题标题】:Python lxml cannot get all textPython lxml 无法获取所有文本
【发布时间】:2021-01-01 21:59:13
【问题描述】:

我正在使用 Python lxml 库来解析 HTML。 我有诸如<a> 之类的叶点,并想获取其父级的文本。 我尝试了两种方式:

  1. .xpath('::parent*'),
  2. .getparent().text
from lxml.etree import HTML
text = '<p>FIRST PART<a href="THE LINK" target="_blank">LINK TEXT</a>SECOND PART</p>'

parsed = HTML(text)
parsed.xpath('//a')[0].getparent().text
parsed.xpath('//a/parent::*')[0].text

我使用这两种方法都得到了FIRST PART,但我怎样才能获得SECOND PART

【问题讨论】:

    标签: python python-3.x lxml


    【解决方案1】:

    您可以使用元素的.itertext() 方法:

    from lxml.etree import HTML
    
    text = '<p>FIRST PART<a href="THE LINK" target="_blank">LINK TEXT</a>SECOND PART</p>'
    parsed = HTML(text)
    
    parent = parsed.xpath('//a/parent::*')[0]
    text = list(parent.itertext())
    print(text[0])
    print(text[-1])
    

    打印:

    FIRST PART
    SECOND PART
    

    【讨论】:

      猜你喜欢
      • 2022-01-23
      • 2015-09-03
      • 1970-01-01
      • 1970-01-01
      • 2015-09-10
      • 1970-01-01
      • 2014-11-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多