Html 用于<;td>;与<;th>;斯威夫特3和卡纳
我有如下HTML表格数据:Html 用于<;td>;与<;th>;斯威夫特3和卡纳,html,xpath,Html,Xpath,我有如下HTML表格数据: <table class="table simple-stat-table item-table"> <thead> <tr> <th>Item A</th> <th>Item B</th> <th>Item C</th> <th>
<table class="table simple-stat-table item-table">
<thead>
<tr>
<th>Item A</th>
<th>Item B</th>
<th>Item C</th>
<th>Item D</th>
</tr>
</thead>
<tbody>
<tr>
<th>
<div class="media item-minimal align-items-center">
<img class="d-flex mr-4" src=""><h5>Item A Column Data</h5>
</div>
</div>
</th>
<td>Item B Column Data</td>
<td>Item C Column Data</td>
<td>Item D Column Data</td>
</tr>
</tbody>
</table>
但是,当我尝试以下同级
时,我没有返回任何数据,我尝试了以下方法:
doc.xpath("//th[contains(text(), 'Item B')]/following-sibling::td")
doc.xpath("//td[//th[contains(text(), 'Item B')]]")
doc.xpath("//th[contains(text(), 'Item B')]/preceding-sibling::td")
doc.xpath("td[contains(preceding-sibling::text(), 'Item B')]")
doc.xpath(".//tr[th='Item B']/td")
doc.xpath("//td[../th='Item B']")
有什么建议吗?或者我做了什么/错过了什么
很明显,我在寻找基于th文本的td文本。
提前感谢您的帮助。那些
th
和td
不是兄弟姐妹,因为他们有不同的父母//td[//th]
表示带有子代th
的td
-以及错误表达式
您可以尝试以下XPath:
//td[starts-with(text(), ./preceding::th[.="Item B"])]
你的解决方案非常有效!上面的数据只是这个问题的测试数据,我会接受答案,但是当我在实际数据上使用这个解决方案时,它不起作用,表的结构完全相同。。?如果你想进一步帮助我,让我知道,否则,谢谢你的快速和有益的回应。
//td[starts-with(text(), ./preceding::th[.="Item B"])]