我无法复制 Nokogiri从有效 HTML 中id
的标记中剥离参数的问题。<body>
这是我的 Nokogiri/LibXML 和 Ruby 细节:
nokogiri: 1.5.9
ruby:
version: 1.9.3
platform: x86_64-darwin10.8.0
description: ruby 1.9.3p392 (2013-02-22 revision 39386) [x86_64-darwin10.8.0]
engine: ruby
libxml:
binding: extension
compiled: 2.7.7
loaded: 2.7.7
这是对 Nokogiri 的简单测试:
doc = Nokogiri::HTML('<html><body id="foo">bar</body></html>')
puts doc.to_html
回报:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html><body id="foo">bar</body></html>
当我解析“ http://www.femmeactuelle.fr/ ”时,Nokogiri 的errors
方法返回了许多错误,包括在<head>
and<body>
中。Nokogiri 会在文档损坏时尝试修复它,这可能会导致标签被移动,或者,我怀疑在这种情况下,参数会丢失。
验证文档会返回各种错误,所以我认为问题出在 Nokogiri 之外。如果你想在将它传递给 Nokogiri 之前尝试修复它,你可以通过 HTMLTidy 发送文件,然后看看 Nokogiri 是否可以更好地理解它。否则,花一些时间挖掘 HTML,找出问题所在,然后编写一些字符串操作代码来修补它。
您无法将浏览器呈现的页面源与解析器(如 Nokogiri)输出的源进行比较。它们是非常不同的代码,具有非常不同的目标。浏览器想要让页面呈现一些东西,并且有各种后备来处理损坏的 HTML。解析器不会,因为它的工作是将 HTML 或 XML 准确地翻译成它的真实结构,以便我们可以挖掘它。