Python使用特定文本获取标记

时间:2015-07-20 09:03:37

标签: python html python-2.7 lxml

我有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>'

1 个答案:

答案 0 :(得分:0)

您可以使用以下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>
相关问题