Python / Etree:从元素及其子元素中获取文本

时间:2011-05-21 14:52:11

标签: python html xml parsing elementtree

我必须使用这样的HTML:

<li><a href="#">S:</a><a class="#"> (n) </a><a href="#">trial</a>, <a href="#">trial run</a>, <b>test</b>, <a href="#">tryout</a> (trying something to find out about it) <i>"a sample for ten days free trial"; "a trial of progesterone failed to relieve the pain"</i></li>

问题是我需要从两个孩子(如ai s)和文本节点(如孩子之间的,部分)获取文本

所有我能做的就是从每个孩子那里得到文本并将它们放在一起(除了所有文本节点之外的所有内容)或者只获取文本节点(而不是{{1}和a s)。有没有办法同时获得两者?

2 个答案:

答案 0 :(得分:1)

lxml changelog显示lxml v2.3与python 3.1.2及更新版本兼容。

您也可以使用正则表达式re.sub(r'<[^>]*?>', '', val)作为Python's equivalent to PHP's strip_tags表示。

答案 1 :(得分:0)

您可以使用lxml.html。

执行此操作
In [1]: import lxml.html

In [2]: el = lxml.html.fromstring('<li><a href="#">S:</a><a class="#"> (n) </a><a href="#">trial</a>, <a href="#">trial run</a>, <b>test</b>, <a href="#">tryout</a> (trying something to find out about it) <i>"a sample for ten days free trial"; "a trial of progesterone failed to relieve the pain"</i></li>')

In [3]: print el.text_content()
S: (n) trial, trial run, test, tryout (trying something to find out about it) "a sample for ten days free trial"; "a trial of progesterone failed to relieve the pain"