2017-05-29 33 views
0

這就是HTML的結構;我試圖獲得<div>的值,如果同級<p>等於TYPE1帶條件的兄弟值多重值的XPath返回值

<div class="zsg-lg"> 
    <div class="hdp-fact-ataglance"> 
    <div class="media-bd"> 
     <p> 
      type1 
     <div> 
      value 
<div class="zsg-lg"> 
    <div class="hdp-fact-ataglance"> 
    <div class="media-bd"> 
     <p> 
      type2 
     <div> 
      value2 

這裏是我的XPath,因此目前沒有工作,我對如何構建它很困惑。

div[contains(@class, "zsg-lg")]/div[contains(@class, "hdp-fact-ataglance")]/div[contains(@class, "media-bd") and [p == "Type"]]/div/text() 

回答

1

我建議這樣的:

normalize-space(
    //div[contains(@class, "zsg-lg")] 
    /div[contains(@class, "hdp-fact-ataglance")] 
    /div[ 
     contains(@class, "media-bd") 
    and 
     normalize-space(p/text())="type1" 
    ] 
    /div 
    /text() 
) 
+0

這個工程太感謝;你能解釋標準化空間的效用嗎? – mburke05

+1

它修剪空格(和一些其他小事情),這有助於如果您的HTML看起來像'

換行符和空格這裏type1換行符和空格這裏

'而不是'

type1

'。 – jcaron

+0

感謝您的解釋 – mburke05

0

看起來像語法是有點偏離,這工作:

div[contains(@class, "zsg-lg")]/div[contains(@class, "hdp-fact-ataglance")]/div[contains(@class, 'media-bd') and p = 'type1']/div/text()