如何在HTML类中有空格时选择元素

时间:2013-11-19 04:16:31

标签: ruby css-selectors web-scraping nokogiri

如何使用CSS选择器获取“这是我需要的文字”一行?

我不知道如何处理表类中的空格。

<table class="some name">
<thead> 
</thead>
<tbody>
    <tr>
    <td style="text-align:center;">50</td>
    <td style="text-align:left;"><a href="/thing" title="thing">This is the text I need</a></td>

1 个答案:

答案 0 :(得分:1)

如果类属性值中有空格,则表示该元素有多个类。要查找具有多个类的元素,css选择器只是类的链。通常,表单如下所示:

element.class1.class2

因此,假设链接是表中第一个带有“some”和“name”类的链接,您可以这样做:

require 'nokogiri'

html = %Q{
<table class="some name">
    <thead> 
    </thead>
    <tbody>
        <tr>
            <td style="text-align:center;">50</td>
            <td style="text-align:left;"><a href="/thing" title="thing">This is the text I need</a></td>
        </tr>
    </tbody>
</table>
}

doc = Nokogiri::XML(html)

# Assuming you need both classes to uniquely identify the table
p doc.at_css('table.some.name a').text
#=> "This is the text I need"

# Note that you do not need to use both classes if one of them is unique
p doc.at_css('table.name a').text
#=> "This is the text I need"