2014-11-01 124 views
1

我需要使用XPath與LXML在Python 2.6中提取兩個文本項:選擇文本

雜牌一個類型1的說明1

雜牌兩個類型2說明2

我使用以下XPath嘗試: '// * [@ ID = 「成果」]/LI/DIV/p /兒童::文本()' 但是這給了我只是下面的文字

-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> 

回答

1

您的XPath的最後這部分:

...../p/child::text() 

...只選擇文本節點是孩子<p>孩子的。這就是爲什麼你錯過了,例如,Description 1,因爲它是直接子<p>。你可以試着改變部分是如下:

...../p//text() 

以上的XPath將選擇這是後代<p>,換句話說,就是所有文本節點,所有的文本內的任意位置<p>節點。

+0

謝謝!工作很好。 – crypterr 2014-11-01 09:53:48