我想要提取p
html
个元素中的所有数据,但要区别对待&#34;标题&#34;例如:<strong>header1</strong>
。
有没有办法用python
lxml
来做?
使用以下代码:
parser = etree.HTMLParser(target=MyParser())
etree.HTML(htmlContent, parser)
虽然class MyParser
是:
class MyParser(object):
def start(self, tag, attrib):
pass
def end(self, tag):
pass
def data(self, data):
--> Here, differentiate between "normal data" and <strong>data</strong>
def close(self):
pass
html
示例:
<div class="entry-content clearfix">
<p style="text-align: center;"><span style="text-decoration: underline;"><strong>header1</strong></span>:<br />
data data 1...</p>
<p style="text-align: center;"><span style="text-decoration: underline;"><strong>header2</strong></span>:<br />
data data 2...</p>
<p style="text-align: center;"><span style="text-decoration: underline;"><strong>header3</strong></span>:<br />
data data 3...<br />
data data 3...<br />
data data 3...</p>
</div>
我想做的例子:
假设我汇总了string
中的所有数据,我想只突出显示标题
现在我无法区分,所以我的字符串就像:
header1 data data data 1... header2 data data data 2...
我想突出显示它,所以它会是这样的:
[[header1]] data data data 1... [[header2]] data data data 2...
答案 0 :(得分:1)
简短的回答是,您需要实施班级MyParser
。
当看到元素的开始标记时,将其推入堆栈。当看到元素的结束标记时,将其从堆栈中弹出。收到数据后,您将知道您所在的标记:堆栈中的顶部标记。状态机模式通常适用于这种解析需求。