Nokogiri 停止搜索子标签

Nokogiri stopped searching for sub tags

我正在编写我的 ruby (2.0) 脚本来读取网页并且运行良好。然后我安装了 ruby 2.2,突然我的 nokogiri 停止搜索子标签,但不是全部。它仍然会找到一些子标签,而有些不仅仅是在同一个脚本中找到的。 我恢复到 1.9,但它仍然在做同样的事情。目前我已经安装了 ruby 2.1.6。我正在使用 Watir-webdriver 和 open-uri 加载页面。 open-uri 正在打开以下页面。

举个例子,这是我的代码:

htmlPage = '<html>
              <head></head>
              <body>
                <table width="100%" border="1">
                  <tbody>
                    <tr valign="top">
                      <td width="38%" bgcolor="#EFEFEF">
                        <b>
                          <font size="4">NPL Listing History</font>
                        </b>
                      </td>
                      <td width="62%" bgcolor="#EFEFEF">
                        <b>
                          <font size="4">Dates</font>
                        </b>
                      </td>
                    </tr>
                  </tbody>
                </table>
              </body>
            <html>'

page = Nokogiri::HTML(htmlPage)

puts page.css("table [border='1']")

这应该让我得到带边框 1 的 table,但我得到 nil/null。

我是不是做错了什么?或者我缺少什么?

谢谢!

你的问题是space。在 CSS 选择器中,白色 space 是后代组合子,因此 table [border='1'] 表示 "all descendants of a table that have a border attribute equal to 1. What you want is table[border='1'], which means " 所有 table 具有 border 属性等于 1."