如何使用类名中带有空格的CSS选择器



我试图在一个页面中找到CSS元素,该元素在类名末尾包含空白:

@agent = Mechanize.new
page = @agent.get(somepage)

标签所在位置:

<div class="Example ">

尝试时:

page.search('.Example')

找不到元素,尝试时:

page.search('.Example ') <- space following the name

Nokogiri提出了一个例外:

Nokogiri::CSS::SyntaxError: unexpected '$' after 'DESCENDANT_SELECTOR' 

您的隐含前提,即无法找到类,因为它包含空格,这是不正确的。类名不包括空格。证明:

require 'nokogiri'
html = <<End
  <html>
    <span class="Example ">One</span>
    <span class="Example foo">Two</span>
  </html>
End
doc = Nokogiri::HTML(html)
puts doc.search('.Example')

输出:

<span class="Example ">One</span>
<span class="Example foo">Two</span>

因此,我认为您的HTML文档中根本没有包含Example的类。如果您提供示例HTML,这个问题会更容易回答。

要查找所有具有以空白结尾的class属性的元素:

page.search('*').select{|e| e[:class] =~ /s$/}

如果您专门针对class属性,则可以包含空格。在我的例子中,类值有一个空格:

<p class="Event_CategoryTree category">

以下是我如何使用Nokogiri瞄准该元素:

page.at_css("[class='Event_CategoryTree category']")

您可以使用Xpath。以下代码将返回所有具有类a class with spaces:的div容器

doc = Nokogiri::HTML(page)
result = doc.xpath('//div[@class="a class with spaces"]')

相关内容

  • 没有找到相关文章