我目前有一个具有以下布局的表
<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>
我正在提取行data
中的列myRow
。
目前有x的这个..
//table//tr[@class="myRow"]/td[@class="data"]
这正确地返回了以下节点的数组。
<td class="data">G</td>
<td class="data">H</td>
<td class="data">I</td>
向我返回一个数组,我还需要返回它们与父<tr>
相关的索引,以便我可以使用它并获取相应的标题。
很感激帮助!!
答案 0 :(得分:1)
如果您引用其中一个td
(假设您正在使用基于标记的scrapy),则可以使用XPath ..
访问其父级:
td.xpath('..')
或者,您可以先选择所需的th
,然后从那里选择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