Python 获取带有特定文本的标签
Python get tag with certain text
我用 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>'
您可以使用以下 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>
我用 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>'
您可以使用以下 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>