【问题标题】:Nokogiri stopped searching for sub tagsNokogiri 停止搜索子标签
【发布时间】:2015-05-14 18:51:50
【问题描述】:

我正在编写我的 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。

我做错了吗?还是我错过了什么?

谢谢!

【问题讨论】:

  • 您的选择器说“获取所有具有bgcolor 属性等于#FFFFFF 并且是body 的子元素的元素。”如果您只想要整个身体,请使用选择器body
  • 好吧,不好的例子!我会改变它。我想要的是带有边框 = 1 的表格,@Jordan
  • 欢迎来到 Stack Overflow。不要将我们指向一个页面,而是将 HTML 减少到复制您所看到的问题所需的最低限度。 该 URL 失效时,该问题将没有意义或对其他人有用。页面中嵌入的最小 HTML 不会发生。而且,要求我们追踪 URL 并浏览完整的 HTML 页面只会减慢我们帮助您的能力,因此请帮助我们帮助您并将我们需要的内容放在问题本身中。有关详细信息,请参阅“How to create a Minimal, Complete, and Verifiable example”。

标签: ruby nokogiri open-uri


【解决方案1】:

你的问题是空间。在 CSS 选择器中,空格是后代组合符,所以 table [border='1'] 表示“table 的所有后代,其 border 属性等于 1。你想要的是 table[border='1'],这意味着“所有 table border 属性等于 1 的元素。"

【讨论】:

  • 谢谢,谢谢!无论出于何种原因,它以前都可以正常工作,所以我只是假设它很好。
猜你喜欢
  • 1970-01-01
  • 2017-12-14
  • 1970-01-01
  • 1970-01-01
  • 2011-06-11
  • 2011-06-25
  • 1970-01-01
  • 2017-11-23
  • 1970-01-01
相关资源
最近更新 更多