Я не могу дублировать проблему с Nokogiri, лишая параметр id
из тега <body>
в допустимом HTML. Вот мои Nokogiri/Libxml и Рубиновые сведения:
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/', errors
метод возвращает Nokogiri в ряд ошибок, в том числе в <head>
и <body>
. Nokogiri пытается исправить документ, когда он сломан, что может привести к перемещению тегов или, как я подозреваю, в этом случае параметры теряются.
Validating the document возвращает всевозможные ошибки, поэтому я думаю, что проблема лежит за пределами Нокигири. Если вы хотите попытаться исправить это, прежде чем передавать его в Nokogiri, вы можете отправить файл через HTMLTidy, а затем посмотреть, сможет ли Nokogiri лучше понять это. В противном случае, потратьте некоторое время на копание через HTML, выясните, что сломано, и напишите некоторый код манипуляции с строкой, чтобы исправить его.
Вы не можете сравнить источник страницы, которую браузер отображает с помощью анализатора, например, Nokogiri. Это очень разные фрагменты кода, с очень разными целями. Браузер хочет сделать страницу рендерингом что-то, и имеет всевозможные спады для работы со сломанным HTML. Парсер этого не делает, потому что его задача состоит в том, чтобы точно перевести HTML или XML в его истинную структуру, чтобы мы могли ее прорвать.
Можете ли вы пояснить, что вы подразумеваете под «потерянием id»? Какой результат вы видите, и чего вы ожидаете? – PinnyM
Я обновил вопрос. – Awea
Все еще не следует за вами, можете ли вы опубликовать фрагмент HTML того, что вы видите, что выглядит неправильно/отличается и что вы ожидаете от него? – PinnyM