0

我必须使用一些这样的 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>

问题是我需要从子节点(如as 和is)和文本节点(如,子节点之间的部分)中获取文本。

我所能做的就是从每个孩子那里获取文本并将它们放在一起(这给了我除了所有文本节点之外的所有内容)或者只获取文本节点(而不是aand is)。有没有办法两者兼得?

4

2 回答 2

1

lxml 更改日志显示lxml v2.3 与 python 3.1.2 和更新版本兼容。

你也可以使用 regexpre.sub(r'<[^>]*?>', '', val)作为Python 的等效于 PHP 的 strip_tags所说的。

于 2011-05-21T15:49:34.933 回答
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"
于 2011-05-21T15:05:16.770 回答