【问题标题】:Python get tag with certain textPython获取带有特定文本的标签
【发布时间】:2015-07-20 09:03:37
【问题描述】:

我有带有 html 块的字符串,比如

a = '<div>Test moree test <div> London is ... <p>mooo</p></div></div>'

我需要获取特定文本的块,例如

super_func("London", a) ==> '<div> London is ... <p>mooo</p></div>'
super_func('mooo', a) = '<p>mooo</p>'

【问题讨论】:

    标签: python html python-2.7 lxml


    【解决方案1】:

    您可以使用以下 XPath 查询来查找包含特定文本的元素,而不管元素名称及其在 HTML 文档中的位置:

    //*[contains(text(),'certain text')]
    

    这是一个使用 lxml.html 库的工作示例:

    from lxml import html
    
    def super_func(keyword, htmldoc):
        query = '//*[contains(text(),"{0}")]'
        result = htmldoc.xpath(query.format(keyword))
        if len(result) > 0:
            return html.tostring(result[0])
        else:
            return ''
    
    a = '<div>Test moree test <div> London is ... <p>mooo</p></div></div>'
    doc = html.fromstring(a)
    text = 'London'
    print super_func(text, doc)
    text = 'mooo'
    print super_func(text, doc)
    

    输出:

    <div> London is ... <p>mooo</p></div>
    <p>mooo</p>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-07-18
      • 1970-01-01
      • 1970-01-01
      • 2013-09-24
      • 1970-01-01
      • 2011-08-27
      • 1970-01-01
      相关资源
      最近更新 更多