Nokogiri:如何排除具有特定类名的HTML属性



如果我想在Ruby中使用Nokogiri解析HTML块,如下所示:

<th class="first">ancd</th>
<th>xyz</th>
<th>sdf</th>

如何排除包含某个类名的标记?这种情况下的"第一个"。

您可以使用CSS选择器:

doc.css('th:not(.first)')

在这种简单的情况下,您还可以使用xpath:

doc.xpath('//th[not(@class="first")]')

不同之处在于,xpath要求类名完全匹配。如果你有可能拥有多个类,例如<th class="red first">,那么CSS选择器会识别它,但xpath不会识别它(不会让它变得更复杂)。

编辑:仅供参考,如果你想要一个元素上可能有多个类时可以选择一个类的xpath:

doc.xpath('//th[@class and contains(concat(" ",normalize-space(@class)," "), " first ")]')

通常XPath比CSS选择器灵活得多,但这是一种支持CSS的HTML边缘情况。

相关内容

  • 没有找到相关文章