为什么我使用Nokogiri会丢失数据?

时间:2011-05-23 09:49:42

标签: ruby nokogiri

在我的ubuntu 10.04主机上,我在Ruby脚本中使用了Nokogiri。

doc = Nokogiri::HTML(open("http://www.google.com.hk"))

工作正常,我收到数据。

在运行CentOS 5的产品主机上,它失败了。没有错误,它只返回一行数据。

#<Nokogiri::HTML::Document:0x43a5332 name="document" children=[#<Nokogiri::XML::DTD:0x43a5094 name="html">]>

#<Nokogiri::XML::DTD:0x43a5094 name="html">中的数据在哪里?

2 个答案:

答案 0 :(得分:1)

您的代码可能隐藏了您的错误。尝试从解析数据中分割出您的数据请求,这样您就可以看到Nokogiri看到的内容:

body = open("http://www.google.com.hk").read
puts body
doc = Nokogiri::HTML(body)

答案 1 :(得分:0)

Nokogiri使用libxml2来完成大部分繁重的工作。您的生产环境中可能安装了错误的libxml2。安装一个干净的,更新版本的libxml2,然后重新安装Nokogiri(确保它使用您的新安装)。

有关详情,请参阅 "What to do if libxml2 is being a jerk"