我已經編寫了一個腳本來解析出上傳到我們的應用程序的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