2016-09-25 181 views
0

我現在有一個具有如下佈局XPATH獲取標題TH特定列TD

<table> 
<thead> 
    <tr> 
    <th>Header One</th> 
    <th>Header Two</th> 
    <th class="headerBorder">H</th> 
    <th>Header Three</th> 
    </tr> 
</thead> 
<tbody> 
    <tr> 
    <td>A</td> 
    <td>B</td> 
    <td class="border">H</td> 
    <td>C</td> 
    </tr> 
    <tr> 
    <td>D</td> 
    <td>E</td> 
    <td class="border">H</td> 
    <td>F</td> 
    </tr> 
    <tr class="myRow"> 
    <td class="data">G</td> 
    <td class="data">H</td> 
    <td class="border">H</td> 
    <td class="data">I</td> 
    </tr> 
</tbody> 
</table> 

我提取的cols datamyRow在表中。

目前有這個的XPath ..

//table//tr[@class="myRow"]/td[@class="data"]

這正確返回我下面的節點的數組。

<td class="data">G</td>

<td class="data">H</td>

<td class="data">I</td>

還給我一個數組,我還需要回到他們的關係是什麼指數其父<tr>,這樣我可以利用這一點,並得到相應的頭。

很多幫助將不勝感激!

回答

1

如果你有到td S的一個參考(假設你使用scrapy基於標籤),您可以使用XPath ..去其父:

td.xpath('..') 

或者,你可以首先選擇您想要的th(es),然後從那裏選擇td。這將使您可以輕鬆地與每個不同的th及其子女一起工作,而不必過濾掉重複項等。:

for th in response.xpath('//table//tr[@class="myRow"]'): 
    # do something with th 
    for td in th.xpath('td[@class = "data"]'): 
     # do something with td