我已经编写了一个脚本来解析出上传到我们的应用程序的HTML文件中的一些需要的代码。在OS X上,此过程正常工作。但是,当我上传到我们的测试服务器时,它不会。当我进入测试服务器上的控制台并试图解析文件时,Nokogiri将看不到结构 - 每次我得到一行输出而不是整个文档结构。我的脚本的其余部分没有被执行,因为Nokogiri没有遍历文档。寻找一些关于如何解决问题的帮助。Nokogiri没有在CentOS中读取/解析HTML文件的结构
下面是我用打开文件,并将其输送到引入nokogiri必要的代码:
html = Nokogiri::HTML(File.open("index.html", "r"))
下面是HTML等同于:
#<Nokogiri::HTML::Document:0x10d9bbf0 name="document" children=[#<Nokogiri::XML::DTD:0x10d9b81c name="html">]>
在OS X中,我得到了整个树,如预期。
这里的index.html的内容:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<link rel="stylesheet" href="zero.css" type="text/css" charset="utf-8" />
</head>
<body class="fullpage-vert" onunload="javascript:clearInterval(audioLoop);">
<div id="container">
<div id="danceHolder">
<img id="danceVid" src="1-1.jpg" width="320" height="480" alt="" />
</div>
<div id="introHolder">
<img id="introVid" src="0-1.jpg" width="320" height="480" alt="" />
<div id="ctabg"></div>
<div id="cta1"></div>
<div id="cta2"></div>
<div id="cta3"></div>
<div id="phone"></div>
<div id="logo"></div>
</div>
</div>
<a href="mmbridge:*">bridge test</a>
<frameset cols="25%,75%">
<frame src="frame_a.htm" />
<frame src="frame_b.htm" />
</frameset>
</body>
</html>
当我尝试和搜索框架,例如,我什么也没有:
html.css("frameset").size
0
我知道引入nokogiri有默认的问题在CentOS(2.6.2)上安装了Libxml2版本,但我已按照说明使其基于新版本(2.7.8)构建。这里是nokogiri -v的输出:
# Nokogiri (1.5.0)
---
warnings: []
nokogiri: 1.5.0
ruby:
version: 1.9.2
platform: x86_64-linux
description: ruby 1.9.2p0 (2010-08-18 revision 29036) [x86_64-linux]
engine: ruby
libxml:
binding: extension
compiled: 2.7.8
loaded: 2.7.8
是否有其他人看到过这样的行为?
虽然我确信这是一个完全没有帮助的陈述,但我只是在Ubuntu中运行了您的示例,并且它运行良好。 – Gazler 2012-02-06 21:37:35