Nokogiri停止搜索子标签

时间:2015-05-14 18:51:50

标签: ruby nokogiri open-uri

我正在编写我的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的表,但我得到nil / null。

我做错了吗?或者我缺少的东西?

谢谢!

1 个答案:

答案 0 :(得分:1)

你的问题就是空间。在CSS选择器中,空格是后代组合子,因此table [border='1']表示table的{​​{1}}属性等于border的所有后代。您想要的是1,这意味着&#34;所有table[border='1']元素的table属性等于border。&#34;