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