下表如下:
<table>
<tr>
<td>Foo</td>
<td>Bar</td>
<td>Buzz</td>
</tr>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
</tr>
<tr>
<td>4</td>
<td>5</td>
<td>6</td>
</tr>
</table>假设我不知道值的固定位置,我希望通过给出第一行列的名称来选择第2行,例如:
目前,我知道如何获取列的名称(第1行):
$ pup -f table.html 'td:contains("Foo") text{}'
Foo我知道如何通过以下方式返回下一列:
$ pup -f table.html 'td:contains("Foo") + td text{}'
Bar我希望下一排能通过:
$ pup -f table.html 'td:contains("Foo") + tr text{}'但是它没有返回任何东西(我希望是1)。
这里是基于jQuery的解决方案,但我希望解决方案可以使用pup命令。
我检查过Mozilla的CSS选择器docs页面,但找不到合适的东西。
发布于 2019-03-22 05:11:28
你的选择器
td:contains("Foo") + tr text{}表示直接跟随tr的td文本,作为同级。根据表结构,trs不是tds的兄弟姐妹--它们是它们的父母。
pup具有自己的:parent-of()伪类,列出了这里,但这不足以满足您的需要,因为您无法在与您所拥有的列相同的列中选择下一行的td。选择器4的列组合器||完全符合您的要求,但是它没有在任何地方实现,当然也不是在pup中实现的。使用任何主要使用CSS选择器的命令行工具来完成这一任务并不容易。
https://stackoverflow.com/questions/55291459
复制相似问题