在我的ubuntu 10.04
主机上,我在Ruby脚本中使用Nokogiri。
doc = Nokogiri::HTML(open("http://www.google.com.hk"))
这很好,我收到数据。
在我的产品主机上运行的是centos5,它失败了。没有错误,它只返回一行数据。
#<Nokogiri::HTML::Document:0x43a5332 name="document" children=[#<Nokogiri::XML::DTD:0x43a5094 name="html">]>
#<Nokogiri::XML::DTD:0x43a5094 name="html">
中的数据在哪里?
您的代码可能会向您隐藏错误。试着把你的数据请求从数据解析中分离出来,这样你就可以看到Nokogiri看到的:
body = open("http://www.google.com.hk").read
puts body
doc = Nokogiri::HTML(body)
Nokogiri使用libxml2来完成大部分繁重的工作。很可能您在生产环境中安装了一个糟糕的libxml2。安装一个干净的更新版本的libxml2,然后重新安装Nokogiri(确保它使用您的新安装)。
有关更多信息,请阅读"如果libxml2是混蛋该怎么办"。