我需要在Python 2.6中使用XPath和lxml来提取两个文本项:
-Name One Type 1 Description 1
-Name Two Type 2 Description 2
我尝试使用以下Xpath:' // * [@ id ="结果"] / li / div / p / child :: text()&#39 ; 但是,这只给我以下文字
-Name One Type 1
-Name Two Type 2
有关正确使用Xpath的建议吗?
<div id="container">
<ol id="results">
<li class="mod1" data-li-position="0">
<a href="first.link"><img src="image001.jpg"></a>
<div class="bd">
<h3>
<a href="some.link">Category 1</a>
</h3>
<p class="description">
<strong class="highlight">Name One</strong>
<strong class="highlight">Type 1</strong>
Description 1
</p>
</div>
</li>
<li class="mod2" data-li-position="1">
<a href="second.link"><img src="image002.jpg"></a>
<div class="bd">
<h3>
<a href="another.link">Category 2</a>
</h3>
<p class="description">
<strong class="highlight">Name Two</strong>
Description 2
<strong class="highlight">Type 2</strong>
</p>
</div>
</li>
答案 0 :(得分:2)
XPath的最后一部分:
...../p/child::text()
...仅选择 <p>
的孩子的孩子的文本节点。这就是你错过的原因,例如Description 1
,因为它是<p>
的直接孩子。您可以尝试将该部分更改为:
...../p//text()
上面的XPath将选择所有文本节点,它们是<p>
的后代,换句话说,<p>
内的所有文本节点。< / p>